从远程 FTP 服务器删除超过 x 天的文件

use*_*634 3 linux bash ftp

我有一个远程 FTP 服务器,我通过 cronjob 存储一些备份。

问题是我只有一点空间,所以我进行增量备份。我想将备份保留大约 14 天。

除了 FTP 之外,我没有任何其他访问服务器的权限,而且我现在不知道如何删除超过 x 天的文件。每个文件都有一个名称,其中包含日期

yxzNamezxy-date-y-m-d.tar.bz2 (datev-20100111.tar.bz2(
Run Code Online (Sandbox Code Playgroud)

希望在这里得到一些帮助。

干杯并感谢您希望得到的答案,

丹尼斯

/编辑

我正在尝试使用这部分代码的答案中提到的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
Run Code Online (Sandbox Code Playgroud)

但第二个循环没有给我超过 1 个文件名

干杯,

丹尼斯

PEr*_*Era 5

您可以发送一系列命令并将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."
Run Code Online (Sandbox Code Playgroud)

确保没有人root可以读取此脚本或将凭据放在其他地方。TMPDIR是备份本地所在的目录。当然,您需要编辑明显的部分。

HTH、
佩拉