我有一个远程FTP服务器,我通过cronjob存储一些备份。
问题是我只有less量的空间,所以即时增量备份。 我想保留约14天的备份。
我没有任何其他访问服务器,除了FTP,我现在不怎么删除x天以前的文件。 每个文件都有一个名字和一个date
yxzNamezxy-date-ymd.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
但secound循环不会给我多个文件名
干杯,
丹尼斯
您可以发送一系列命令到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,
PERA
由于在这个post上发表了迟到评论而被拒绝的风险很高,这里有一个想法。
如果您不关心在文件名上添加date,并且如果保留less量可pipe理的备份,则可以使用序号文件名:即backup.1.tgz,backup.2.tgz,backup.3.tgz和等等。
鉴于这些名称,您可以简单地重命名以前的备份,然后再上传一个新的备份。
你应该可以写一个脚本来:
curl的--list-only选项获取文件列表 --quote或--request选项来发送rm或DELE命令与选定的文件名 编辑:
你的第二个循环是指$aFiles作为标量。 你需要像这样的数组引用它:
for sFile in ${aFiles[@]} do echo -e "\nFile:" $sFile done
另外,您不需要临时文件。 你应该能够curl到while 。
我有类似的情况,我看到这还没有完全答复。 我明白那3个子弹是剧本的里程碑:
这是显而易见的。 但是我们可以得到一个正在做它们的脚本吗?
我的文件有一个包含date和时间的文件名,当它们被生成并上传到远程FTP服务器时:
xxx.yyy.z.aaa_01_20160313102903_DUMP01.dmp
date和时间(例如20160313102903)在文件名中的位置是静态的。 当然,这些文件的时间戳也是有效的。
我的目标是使用一个应该在linux机器上运行的脚本来删除比X天更早的文件,在这个机器上我只能使用curl或lftp。
我不能使用除FTP以外的任何其他协议来访问FTP服务器(无sftp,无ssh)
我无法使用date命令“X天前”,也没有“ – ISO”的语法,因为该Linux机器正在运行BusyBox v1.20.2(2015-01-30 16:18:45 WET)不明白人类的date引用
我无法在该FTP服务器上创build临时子文件夹
我一直在寻找应该引导我去解决scheme的脚本,但是因为我是linux noob,所以我的进度非常缓慢,到目前为止我只find:
真实的脚本非常受欢迎。