2017-08-20 41 views
0

我試圖找到大於1 GB的文件並壓縮內容,並且在壓縮文件後,我需要刪除tar文件並取消現有文件。但是,在這個文件夾的同時,它並不是一回事。它將進入用戶的主目錄。這是在Solaris服務器上。無法在Solaris上的相同位置gzip文件

我從遠程服務器運行這個。

ssh -o StrictHostKeychecking=no -qt 192.168.1.1 "$(<.fs1.sh)" 

這是.fs1.sh包含:

threshold="50" 
date=`date +"%m-%d-%y"` 
for fs in $(df -k//var /tmp| awk '{print $6}' | sed '1 d'); do 
    chk=$(df -k ${fs} | sed '1 d' | awk '{print $5}' | awk -F\% '{print $1}') 
    if [ ${chk} -gt ${threshold} ]; then 
     /usr/local/bin/sudo rm -f /tmp/files.log 
     /usr/local/bin/sudo rm -rf /var/core 
     /usr/local/bin/sudo rm -rf /var/audit 
     files=`/usr/local/bin/sudo /usr/bin/find /var/adm -xdev -type f -size +1000000000c -exec ls -lht {} \; | awk '{ print $9}'` 
     files1=`/usr/local/bin/sudo /usr/bin/find /var/adm/log -xdev -type f -size +1000000000c -exec ls -lht {} \; | awk '{ print $9}'` 
     files2=`/usr/local/bin/sudo /usr/bin/find /var/log -xdev -type f -size +1000000000c -exec ls -lht {} \; | awk '{ print $9}'` 
     echo "$files" >>/tmp/files.log 
     echo "$files1" >>/tmp/files.log 
     echo "$files2" >>/tmp/files.log 
     for i in `cat /tmp/files.log` 
     do 
      echo $i 
      /usr/local/bin/sudo tar -cf $i_$date.tar $i 
      /usr/local/bin/sudo gzip $i_$date.tar 
      /usr/local/bin/sudo rm $i_$date.tar 
      /usr/local/bin/sudo cp /dev/null $i 
     done 
    fi 
    if [ ${chk} -gt ${threshold} ]; then 
     echo "$(hostname): Fileystem Warning on ${fs} is used: ${chk}%." 
     sudo /usr/bin/find ${fs} -xdev -type f -size +100000000c -exec ls -lht {} \; 
     echo " -----------------------------------------------------------------------------------------------------------------------------------------------------" 
    fi 
done 
+0

在Mac中,使用'的gzip -v9〜/ SRC/sqltools/SQLCMD/sqlcmd.msd'從一個完全不同的目錄('〜/ soq'),I得到的輸出:'/用戶/ jleffler /src/sqltools/sqlcmd/sqlcmd.msd:\t 79.9% - 用/ Users/jleffler/src/sqltools/sqlcmd/sqlcmd.msd.gz替換 - 即文件在原位壓縮。此外,原始文件被刪除。因此,您不需要刪除原始文件,並且gzip文件應該已經位於正確的位置。 –

+0

如果在Solaris上沒有發生這種情況,你應該調查你是否使用了一個古老的'gzip'(儘管我從來沒有遇到過這樣的版本),或者你需要檢查NFS和root特權是以某種方式搞砸了,或者是什麼。您可以在處理文件時打印出文件名,以確保您能看到正在發生的事情(echo $ i'的輸出是什麼?)。你可以使用'-v9'選項來查看'gzip'在做什麼。您可以在'$(<。fs1.sh)'之前添加'set -x;'。有些東西應該告訴你發生了什麼事。 'sudo'的調用次數令我感到擔憂。 –

回答

0

你可以重定向的gzip輸出使用-c切換到標準輸出和指定輸出文件。

gzip -c $i_$date.tar > /path/to/original/dir/new.gz 
+0

謝謝,但如果文件在5個不同的位置,我們不知道對不對。需要在相同位置壓縮..如果可能的話 -rw-r - r-- 1 root root 856M Jun 27 06:45 /var/log/mail.log_27.06.17.gz -rw ----- - 1 root root 16G 8月20日12:35 /var/log/mail.log -rw ------- 1 root root 7.9G Aug 8 03:10 /var/adm/messages.1 -rw ------- 1 root root 6.1G 8月20日12:35/var/adm/messages -rw-rw ---- 1 root mail 1.5G Aug 20 12:26/var/mail/root – pandi

+0

here只是我需要找出/ var/adm位置上的1gb以上的文件,並且需要將其壓縮並且無需現有文件,這是我需要的,請在任何方面幫助解決此問題 – pandi

+0

此處目標路徑必須從輸出日誌中取出它。/usr/local/bin/sudo/usr/bin/find/var/adm -xdev -type f -size + 1000000000c -exec ls -lht {} \; | awk'{print $ 9}'' – pandi