0

我希望仅将特定文件和目录从 cpanel 备份同步到远程服务器。

基本结构是:

/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 或类似的东西遍历文件夹来实现,但这不是我的强项

4

2 回答 2

0

rsync 有 '--include-from' 和 '--exclude-from' 参数。这使您可以在单独的文件中定义白名单和黑名单。也许这可以使解决方案更简单。

于 2012-09-26T12:24:29.883 回答
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
于 2012-09-26T11:21:50.440 回答