我希望只将特定文件和目录从cpanel备份rsync到远程服务器。
基本结构是:
/backup/cpbackup/daily/USERNAME
从USERNAME目录中我要备份
../USERNAME/mysql/USERNAME.sql
还有一个文件夹(包含文件和子文件夹)
../USERNAME/homedir/siteassets
所以我最终在我的远程服务器上用:
/USERNAME/mysql/USERNAME.sql
/USERNAME/homedir/siteassets
我可以使用通配符
rsync /backup/cpbackup/daily/*/mysql/*.sql user@remote.ip.address:servername/
但这不会远程向我提供USERNAME文件夹,并且意味着所有文件最终都会合并。我认为通过使用bash或类似的东西迭代文件夹是可能的,但这不是我的强点
答案 0 :(得分:0)
自己回答:
#!/bin/bash
src="/backup/cpbackup/daily"
for dir in `ls "$src/"`
do
if [ -d "$src/$dir" ]; then
# look for mysql directory
mypath="$src/$dir/mysql"
if [ -d $mypath ]; then
mysqlfile=$mypath/$dir".sql"
rsync -vau --progress --stats --rsh=ssh $mysqlfile user@remote.ip.address.net:servername/$dir
fi
# look for images directory
impath="$src/$dir/homedir/siteassets"
if [ -d $impath ]; then
rsync -vau --progress --stats --rsh=ssh $impath user@remote.ip.address.net:servername/$dir
fi
fi
done
答案 1 :(得分:0)
rsync具有'--include-from'和'--exclude-from'参数。这使您可以在单独的文件中定义白名单和黑名单。也许这可以使解决方案更简单。