linux下shell脚本同步文件
使用spawn + rsync
yum -y install expect
yum -y install rsync
num=3
database_list=(dacdb data_center mds_server_deploy commdb data_standard data_standard_database ent_portrait data_management_db)
dd=`date +%Y%m%d`
tool=mysqldump
host=192.168.147.233
username=xxxxxxx
password=xxxxxxx
for database in ${database_list[@]}
do
backup_dir=/data/mysqldata/233/${database}
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
cd $backup_dir && rm -rf *.sql
echo "$tool -u $username -p****** -h$host $database > $backup_dir/$database-$dd.sql"
$tool -u $username -p$password -h$host $database > $backup_dir/$database-$dd.sql
done
cd /data/mysqldata/ && tar -cvf 233.tar 233/
pass="1234asdf!"
for i in seq 1 ${num}
do
echo ${i}
expect -c "
set timeout 2000
spawn rsync -avLP /data/mysqldata/233.tar scp01@192.168.147.234:/data/MYSQL_BACKUP/
expect {
\"*assword\" {send \"$pass\n\"}
}
expect eof"
done
-a #归档模式传输, 等于-tropgDl
-v #详细模式输出, 打印速率, 文件数量等
-z #传输时进行压缩以提高效率
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-P #显示同步的过程及传输时的进度等信息
-D #保持设备文件信息
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100 #限速传输
--partial #断点续传
--delete #让目标目录和源目录数据保持一致
--password-file=xxx #使用密码文件