$ date
Wed 24 Apr 2019 09:54:53 AM PDT
$ rsync --version
rsync version 3.1.3 protocol version 31
...
句法:rsync <file_/_folder_list> <source> <target>
文件夹名称(这里,带有尾随/
;例如Cancer - Evolution/
)位于文件夹列表文件中(例如:cm_folder_list_test):
# /mnt/Vancouver/projects/ie/claws/data/cm_folder_list_test
# test file: 2019-04-24
Cancer/
Cancer - Evolution/
Cancer - Genomic Variants/
Cancer - Metastasis (EMT Transition ...)/
Cancer Pathways, Networks/
Catabolism - Autophagy; Phagosomes; Mitophagy/
Catabolism - Lysosomes/
如果您不包括那些尾随/
,则会创建 rsync 的目标文件夹,但它们是空的。
这些文件夹名称附加到其路径的其余部分 ( /home/victoria/Mail/2_RESEARCH - NEWS
),从而为 rsync 提供完整的文件夹路径;例如:/home/victoria/Mail/2_RESEARCH - NEWS/Cancer - Evolution/
。
请注意,您还需要使用--files-from=
...,而不是--include-from=
...
rsync -aqP --delete --files-from=/mnt/Vancouver/projects/ie/claws/data/cm_folder_list_test "/home/victoria/Mail/2_RESEARCH - NEWS" $IN/
(在我的 BASH 脚本中,我定义$IN
了如下变量。)
BASEDIR="/mnt/Vancouver/projects/ie/claws"
IN=$BASEDIR/data/test/input
使用的 rsync 选项:
-a : archive: equals -rlptgoD (no -H,-A,-X)
-r : recursive
-l : copy symlinks as symlinks
-p : preserve permissions
-t : preserve modification times
-g : preserve group
-o : preserve owner (super-user only)
-D : same as --devices --specials
-q : quiet (https://serverfault.com/questions/547106/run-totally-silent-rsync)
--delete
This tells rsync to delete extraneous files from the RECEIVING SIDE (ones
that AREN’T ON THE SENDING SIDE), but only for the directories that are
being synchronized. You must have asked rsync to send the whole directory
(e.g. "dir" or "dir/") without using a wildcard for the directory’s contents
(e.g. "dir/*") since the wildcard is expanded by the shell and rsync thus
gets a request to transfer individual files, not the files’ parent directory.
Files that are excluded from the transfer are also excluded from being
deleted unless you use the --delete-excluded option or mark the rules as
only matching on the sending side (see the include/exclude modifiers in the
FILTER RULES section). ...