【问题标题】:Loop through directories and rsync contents循环遍历目录和 rsync 内容
【发布时间】:2012-09-26 10:58:12
【问题描述】:

我希望仅将特定文件和目录从 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 或类似的东西遍历文件夹来实现,但这不是我的强项

【问题讨论】:

    标签: linux bash backup rsync


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      自己回答:

      #!/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
      

      【讨论】:

        猜你喜欢
        • 2014-04-13
        • 1970-01-01
        • 1970-01-01
        • 2018-10-19
        • 2013-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多