2012-09-26 133 views
0

我期待rsync只有特定的文件和目錄從cpanel備份到遠程服務器。通過目錄和rsync內容循環

的基本結構是:

從USERNAME目錄中
/backup/cpbackup/daily/USERNAME 

我想備份

../USERNAME/mysql/USERNAME.sql 

,也是一個文件夾(包含文件和子文件夾)

../USERNAME/homedir/siteassets 

所以我結束在我的遠程服務器上:

/USERNAME/mysql/USERNAME.sql 
/USERNAME/homedir/siteassets 

我可以使用通配符

rsync /backup/cpbackup/daily/*/mysql/*.sql [email protected]:servername/ 

但這不會遠程給我的用戶名文件夾,將意味着所有的文件最終得到合併。我認爲這是可能通過使用bash或類似的東西謂遍歷文件夾,但是那不是我的強項

回答

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 [email protected]:servername/$dir 
     fi 

     # look for images directory  
     impath="$src/$dir/homedir/siteassets" 
     if [ -d $impath ]; then 
       rsync -vau --progress --stats --rsh=ssh $impath [email protected]:servername/$dir 
     fi 

    fi 
done 
0

rsync的有「從--include」和「--exclude從'參數。這使您可以在單獨的文件中定義白名單和黑名單。也許這可以使解決方案更簡單。