我正在努力设置 cron 作业,而且我对此很陌生。目的是分析生成的新数据。数据存在于目录中。
我只想同步最新的数据/尚未分析的数据,我为此创建了已分析的目录列表(要排除)。我使用以下命令将数据从具有特定模式的源同步到目标。
rsync -av --exclude-from=/home/list1 /datasets001/*/Pr*/*RNA* $TMPDIR/raw_fastq
问题是上述命令的行为与以下命令相同,并且不排除 list1 中提到的任何数据。
rsync -av /datasets001/*/Pr*/*RNA* $TMPDIR/raw_fastq
list1 的几行如下:
datasets001/demux_182_160415_D00163_0376_BHCYVHBCXX_PM155__uid1849/Project_PM155/Sample_PM155_ORG9_1_Case_RNASeq
datasets001/demux_182_160415_D00163_0376_BHCYVHBCXX_PM601__uid1848/Project_PM601/Sample_PM601_PDX10_1_Case_RNASeq
此外,欢迎任何其他同步新数据并分析它(基于日期)的建议。
答案1
有两个问题;
首先,您已将排除路径定义为相对路径而不是绝对路径;尝试添加前导“/”。
第二个是您已明确提供源路径,(我认为)这将覆盖排除。
如果您从排除列表中删除路径,它可能会按照您想要的方式工作,即只有一个排除文件,例如:
Sample_PM155_ORG9_1_Case_RNASeq
Sample_PM601_PDX10_1_Case_RNASeq
或者你可以使用类似的东西:
rsync -av --exclude-from=/home/list1 \
--include='/' --include='/*' --include='/*/Pr*' --include='/*/Pr*/*RNA*' \
--exclude='*' \
/datasets001/ "$TMPDIR/raw_fastq/"
(请注意,排除和包含的顺序很重要,第一个匹配适用)
然而,这将保留目标目录中的源目录结构,这可能是也可能不是您想要的。