将Rsync与Makefile一起使用
我正在尝试使用makefile将电脑上的一些目录与thumb drive同步。为此,我在一个目标中使用多个命令。 makefile看起来有点像这样将Rsync与Makefile一起使用,makefile,rsync,Makefile,Rsync,我正在尝试使用makefile将电脑上的一些目录与thumb drive同步。为此,我在一个目标中使用多个命令。 makefile看起来有点像这样 pend: rsync -avhzPu /foo/ /bar/ rsync -avhzPu /bob/ /alice/ 但是,每次我执行make-f.sync pend时,只有第一个命令运行,并给出一些输出和一些错误 sent 45.78K bytes received 3.32K bytes 98.20K bytes/
pend:
rsync -avhzPu /foo/ /bar/
rsync -avhzPu /bob/ /alice/
但是,每次我执行make-f.sync pend
时,只有第一个命令运行,并给出一些输出和一些错误
sent 45.78K bytes received 3.32K bytes 98.20K bytes/sec
total size is 4.42G speedup is 89,981.37
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1196) [sender=3.1.2]
.sync:14: recipe for target 'pend' failed
make: *** [pend] Error 23
但是当我单独运行这些命令时,它就可以工作了。我不确定我在这里做错了什么。从输出
sent 45.78K bytes received 3.32K bytes 98.20K bytes/sec
total size is 4.42G speedup is 89,981.37
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1196) [sender=3.1.2]
.sync:14: recipe for target 'pend' failed
make: *** [pend] Error 23
…第一个rsync
失败。如果它以一个非零退出代码结束,那么make
将在该点退出。如果希望make
继续使用规则中的其他命令,则可以通过在命令前面加上-
来明确请求它忽略非零退出代码
pend:
-rsync -avhzPu /foo/ /bar/
-rsync -avhzPu /bob/ /alice/
当然,这假定继续执行命令是所需的行为。否则,您需要更仔细地考虑如何继续。从输出
sent 45.78K bytes received 3.32K bytes 98.20K bytes/sec
total size is 4.42G speedup is 89,981.37
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1196) [sender=3.1.2]
.sync:14: recipe for target 'pend' failed
make: *** [pend] Error 23
…第一个rsync
失败。如果它以一个非零退出代码结束,那么make
将在该点退出。如果希望make
继续使用规则中的其他命令,则可以通过在命令前面加上-
来明确请求它忽略非零退出代码
pend:
-rsync -avhzPu /foo/ /bar/
-rsync -avhzPu /bob/ /alice/
当然,这假定继续执行命令是所需的行为。否则,您需要更仔细地考虑如何继续。为什么要使用“;\”在每行末尾?用于多行命令。它们不应该在那里吗?您通常不会在makefile中这样做-您可以在依赖项行下拥有任意多的命令,而不需要任何
代码>分隔符或`\`行继续符。请参阅:可能是~
没有在makefile上下文中进行计算-请尝试使用$(HOME)
来代替。好的-在这种情况下,我没有主意了…为什么“;\”在每行末尾?用于多行命令。它们不应该在那里吗?您通常不会在makefile中这样做-您可以在依赖项行下拥有任意多的命令,而不需要任何代码>分隔符或`\`行继续符。请参阅:可能是~
没有在makefile上下文中进行计算-请尝试使用$(HOME)
来代替。好吧-如果是这样,我就没有主意了。。。。。。但是,您应该正确理解它失败的原因,然后才确定失败是可以忽略的,还是可以消除或解决的,这样rsync
就不会失败。当命令失败时,make
中止是有充分理由的。@tripleee当然。编辑了答案以添加但书。rsync可能失败,因为它跨不同类型的文件系统(例如UFS到FAT)进行复制,而目标文件系统对某些属性(如所有权和权限)没有等效的概念。。。。但是,您应该正确理解它失败的原因,然后才确定失败是可以忽略的,还是可以消除或解决的,这样rsync
就不会失败。当命令失败时,make
中止是有充分理由的。@tripleee当然。编辑答案以添加但书。rsync可能会失败,因为它跨不同类型的文件系统(例如UFS到FAT)进行复制,而目标文件系统对某些属性(如所有权和权限)没有等效的概念。