Linux
從遠端 FTP 伺服器刪除超過 x 天的文件
我有一個遠端 FTP 伺服器,我通過 cronjob 儲存一些備份。
問題是我只有一點空間,所以我在做增量備份。我想保留大約 14 天的備份。
除了 FTP,我對伺服器沒有任何其他訪問權限,而且我現在不知道如何刪除早於 x 天的文件。每個文件都有一個帶有日期的名稱
yxzNamezxy-date-y-m-d.tar.bz2 (datev-20100111.tar.bz2(
希望能在這裡得到一些幫助。
歡呼並感謝您希望得到的答案,
丹尼斯
/編輯
我正在嘗試使用這部分程式碼的回答中提到的 curl 東西
curl ftp://$FTP_SERVER --user $FTP_USER:$FTP_PASS --list-only > files.tmp declare -a aFiles let iCount=0 exec < files.tmp while read sLine do aFiles[$iCount]=$sLine ((iCount++)) done echo -e "\n Files: \n\n\n" echo ${aFiles[@]} echo -e "\nfor ...\n\n\n" for sFile in $aFiles do echo -e "\nFile:" $sFile done
但第二個循環沒有給我超過 1 個文件名
乾杯,
丹尼斯
您可以發送一系列命令
lftp
並將其包裝在一個 shell 腳本中,該腳本計算太舊文件的文件名(參見下面的腳本)。TODAY=$(date --iso) # Today's date like YYYY-MM-DD RMDATE=$(date --iso -d '6 days ago') # TODAY minus X days - too old files FTPUSER=username FTPPW=password # Better load this from an encrypted file FTPSERVER=FQDN_or_IP LFTP=/usr/bin/lftp # Path to binary TMPDIR=$(mktemp -d) # Your archives are here # CAUTION: mput -E deletes local files after upload echo -n "Uploading files via FTP... " $LFTP << EOF open ${FTPUSER}:${FTPPW}@${FTPSERVER} cd backups/${HOSTNAME} mkdir ${TODAY} cd ${TODAY} mput -E ${TMPDIR}/* cd .. rm -rf ${RMDATE} bye EOF echo "Done."
確保沒有人
root
可以讀取此腳本或將憑據放在其他地方。TMPDIR
是備份駐留在本地的目錄。當然,您需要編輯明顯的部分。HTH,
佩拉