Linux

從遠端 FTP 伺服器刪除超過 x 天的文件

  • August 17, 2016

我有一個遠端 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,

佩拉

引用自:https://serverfault.com/questions/101920