我有一个远程 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 个文件名
干杯,
丹尼斯
您可以发送一系列命令并将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、
佩拉
归档时间: |
|
查看次数: |
31652 次 |
最近记录: |