Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Rsync与Makefile一起使用_Makefile_Rsync - Fatal编程技术网

将Rsync与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/

我正在尝试使用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/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)进行复制,而目标文件系统对某些属性(如所有权和权限)没有等效的概念。