rsync 根据一个文件列表文档来同步

回复 收藏
有时候,有这样的需求,就是根据一个文档中的文件列表来同步文件。举一个例子,1.txt 是文件列表,内容为:
cat  1.txt
/data/a/a.txt
/data/b.txt
/data/c/b/c.txt

那么同步的命令应该是
rsync  -av  --files-from=1.txt  /  ip::module/
需要注意的是, 1.txt 中如果写全局路径,那么source目录需要写/
2012-05-02 09:32 举报
已邀请:
0

lyhabc

赞同来自:

受教了1.txt 中如果写全局路径,应该是绝对路径吧
0

阿铭 管理员

赞同来自:

lyhabc 发表于 2015-4-23 00:02
受教了1.txt 中如果写全局路径,应该是绝对路径吧

是绝对路径
0

maomao5987370

赞同来自:

学习了
0

蔡炳森

赞同来自:

#!/usr/bin/expect

set timeout 50
set host [lindex $argv 0]
set file [lindex $argv 1]
set passwd "123456"

spawn rsync -av --files-from=2.txt /usr/local/sbin/shell/ root@$host:$file  #用来指明2.txt中文件的路径,2.txt中只要写要同步的文件名就好了。

expect {
  "yes/no" {send "yes\r"}
  "password:" {send "$passwd\r"}
}
expect eof
0

mind_sky

赞同来自:

如果同步不同目录的话   是不是--files-from=2.txt /         用/更好些    2.txt里面写绝对路径
0

疯疯小和尚

赞同来自:

本帖最后由 疯疯小和尚 于 2016-8-8 21:46 编辑

如果list文件里写相对路径,实验如下:

[root@centos201 ~]# cd /tmp/
[root@centos201 tmp]# vim list01.txt
加入
aaa
bbb/bb
ccc/c.txt
[root@centos201 tmp]# mkdir -p aaa  bbb/bb  ccc
[root@centos201 tmp]# echo 'c'>ccc/c.txt
[root@centos201 tmp]# vim 8.expect
#! /usr/bin/expect
set passwd "654321"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -avzP  --files-from=list01.txt                ./                root@$host:$file
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof
开始进行同步测试[root@centos201 tmp]# chmod u+x 8.expect
[root@centos201 tmp]# ./8.expect 192.168.2.205 /usr/local/test01
spawn rsync -avzP --files-from=list01.txt ./ root@192.168.2.205:/usr/local/test01
root@192.168.2.205's password:
building file list ...
5 files to consider
created directory /usr/local/test01
aaa/
bbb/
bbb/bb/
ccc/
ccc/c.txt
           2 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/5)

sent 131 bytes  received 43 bytes  348.00 bytes/sec
total size is 2  speedup is 0.01
检查另一台机器
[root@centos05 tmp]# tree /usr/local/test01/
/usr/local/test01/
├── aaa
├── bbb
│   └── bb
└── ccc
    └── c.txt

4 directories, 1 file
0

喀洛池

赞同来自:

学习学习

0

JerryChan - 广东某工业大学大四拼命找offer的渣渣

赞同来自:

测试了一下,1.txt上面如果不写全局路径的话,在写命令的时候source的/需要把路径补全,同样可以达到1.txt写全局路径的效果,而且发现这个--files-from只能是同步文件,参数名的意思也是如此

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: