我正在编写一个 bash 脚本来将备份发送到远程 ftp 服务器。备份文件是使用 WordPress 插件生成的,所以从一开始就为我完成了一半的工作。
该脚本做了几件事。
- 它在本地备份目录中查找任何早于 x 的文件并删除它们
- 它连接到 FTP 并将备份文件放在以当前日期为名称的目录中
- 它会删除早于 x 的备份的所有备份目录
由于我不精通 bash,这是我在网上找到的一堆脚本的混搭。
这是我的脚本:
#! /bin/bash
BACKDIR=/var/www/wp-content/backups
#----------------------FTP Settings--------------------#
FTP=Y
FTPHOST="host"
FTPUSER="user"
FTPPASS="pass"
FTPDIR="/backups"
LFTP=$(which lftp) # Path to binary
#-------------------Deletion Settings-------------------#
DELETE=Y
DAYS=3 # how many days of backups do you want to keep?
TODAY=$(date --iso) # Today's date like YYYY-MM-DD
RMDATE=$(date --iso -d $DAYS' days ago') # TODAY minus X days - too old files
#----------------------End of Settings------------------#
if [ -e $BACKDIR ]
then
if [ $DELETE = "Y" ]
then
find $BACKDIR -iname '*.zip' -type f -mtime +$DAYS -delete
echo "Old files deleted."
fi
if [ $FTP = "Y" ]
then
echo "Initiating FTP connection..."
cd $BACKDIR
$LFTP << EOF
open ${FTPUSER}:${FTPPASS}@${FTPHOST}
mkdir $FTPDIR
cd $FTPDIR
mkdir ${TODAY}
cd ${TODAY}
mput *.zip
cd ..
rm -rf ${RMDATE}
bye
EOF
echo "Done putting files to FTP."
fi
else
echo "No Backup directory."
exit
fi
有两件事我无法完成:
- find 命令不会删除本地备份目录中的任何旧文件。
- 我希望 mput 只放置今天创建的 .zip 文件。
在此先感谢您的帮助。