我需要某人的帮助,因为找不到有效的解决方案,无法使用 rsync 将文件从源目录复制到2个目标目录。
例如, 我的Source目录包含以下文件
[root@s001tst-mariadb ~]# ls -l /tmp/SOURCE/
total 8388592
-rw-r--r-- 1 root root 2147479552 Nov 21 16:14 TESTFILE1
-rw-r--r-- 1 root root 2147479552 Nov 21 16:15 TESTFILE2
-rw-r--r-- 1 root root 2147479552 Nov 21 16:15 TESTFILE3
-rw-r--r-- 1 root root 2147479552 Nov 21 16:16 TESTFILE4
我想将该文件复制到以下目标位置
[root@s001tst-mariadb ~]# ls -l /tmp/DEST1/ && ls -l /tmp/DEST2/
total 0
total 0
我需要的是 rsync复制到目标位置时,必须使用位于源目录(/ tmp / SOURCE /)中的相同文件列表。 rsync不能作为2个单独的命令运行,因为可以更改文件列表(例如,在第一个rsync运行时用户添加了新文件),并且在这种情况下目标目录将具有不同的文件列表。
我已经尝试过,但是由于Source中的文件仅放置在一个Destination目录中,因此无法正常工作。
[root@s001tst-mariadb ~]# rsync -a /tmp/SOURCE/ /tmp/DEST2/ /tmp/DEST1
作为解决方案,我可以在之前手动生成文件列表,然后使用手动创建的文件列表文件运行rsync。但是我想rsync上有一些默认值可以完成此任务
稍后添加:找到的解决方案
使用-write-batch 选项,我得到了所需的东西
**目的地为空
[root@s001tst-mariadb ~]# ls -l /tmp/DEST1/ && ls -l /tmp/DEST2/
total 0
total 0
**将文件从源复制到任何目标
[root@s001tst-mariadb ~]# rsync --write-batch=ABC -av /tmp/SOURCE/ /tmp/DEST1/
sending incremental file list
./
TESTFILE1
TESTFILE2
TESTFILE3
TESTFILE4
sent 8,592,015,627 bytes received 95 bytes 350,694,519.27 bytes/sec
total size is 8,589,918,208 speedup is 1.00
**文件仅在1个目录中
[root@s001tst-mariadb ~]# ls -l /tmp/DEST1/ && ls -l /tmp/DEST2/
total 8388592
-rw-r--r-- 1 root root 2147479552 Nov 21 16:14 TESTFILE1
-rw-r--r-- 1 root root 2147479552 Nov 21 16:15 TESTFILE2
-rw-r--r-- 1 root root 2147479552 Nov 21 16:15 TESTFILE3
-rw-r--r-- 1 root root 2147479552 Nov 21 16:16 TESTFILE4
**使用生成的脚本将文件复制到另一个目标位置
[root@s001tst-mariadb ~]# ./ABC.sh /tmp/DEST2/
receiving incremental file list
./
TESTFILE1
TESTFILE2
TESTFILE3
TESTFILE4
sent 95 bytes received 8,592,015,627 bytes 381,867,365.42 bytes/sec
total size is 8,589,918,208 speedup is 1.00
**现在,两个目录中都存在相同的文件列表
[root@s001tst-mariadb ~]# ls -l /tmp/DEST1/ && ls -l /tmp/DEST2/
total 8388592
-rw-r--r-- 1 root root 2147479552 Nov 21 16:14 TESTFILE1
-rw-r--r-- 1 root root 2147479552 Nov 21 16:15 TESTFILE2
-rw-r--r-- 1 root root 2147479552 Nov 21 16:15 TESTFILE3
-rw-r--r-- 1 root root 2147479552 Nov 21 16:16 TESTFILE4
total 8388592
-rw-r--r-- 1 root root 2147479552 Nov 21 16:14 TESTFILE1
-rw-r--r-- 1 root root 2147479552 Nov 21 16:15 TESTFILE2
-rw-r--r-- 1 root root 2147479552 Nov 21 16:15 TESTFILE3
-rw-r--r-- 1 root root 2147479552 Nov 21 16:16 TESTFILE4
使用-write-batch 选项时,将创建一个临时文件,其大小等于所有复制文件的总和。因此,您的磁盘上必须有足够的空间。
** Generated Script
[root@s001tst-mariadb ~]# du -hs ABC.sh
4.0K ABC.sh
** Content of the script
[root@s001tst-mariadb ~]# cat ABC.sh
rsync --read-batch=ABC -av ${1:-/tmp/DEST1/}
** Dump file
[root@s001tst-mariadb ~]# du -hs ABC
8.1G ABC