CentOS rsync目录内容但不是目录?

CentOS rsync目录内容但不是目录?

我试图将 /deploy/ 的内容填充到 /panda/ 但它似乎不起作用。我在这里搜索并找到了保留尾部斜杠的说明;然而,每次我运行它时,都会在 /panda/ (因此 /panda/ /)中创建一个空白命名的目录,其中包含 /deploy/ 的内容,但我试图在不创建新目录的情况下实现此目的。我希望 /deploy/ 的内容覆盖 /panda/ 的内容

这是我当前使用的代码:

rsync -ahrvz /home/jellywhat/public_html/deploy/ /home/jellywhat/public_html/panda/

我没有在 /panda 中获得“部署”目录,我只是获得了一个名称为空的目录,其中包含 /deploy/ 的内容

空白文件夹

我尝试删除接收目录上的尾部斜杠...

rsync -ahrvz /home/jellywhat/public_html/deploy/ /home/jellywhat/public_html/panda

这看似没有任何作用。我收到一封包含文件列表的电子邮件,该列表是正确的,其中包括 FileA.php,这是我用作参考的特定文件,但位于 /deploy/cfx_controllers/ 下的 FileA.php 未复制到 /panda/ cfx_controllers/ 即使它是最新修改的文​​件并且在 /panda/cfx_controllers/ 下不存在

更新:下午 1:51

它实际上正在“工作”;它不会更新现有的 panda 目录,而是创建一个全新的目录:

文件夹重复

如何让它“更新”“现有”目录而不发生这种情况?

更新:下午 2:36

我尝试了带斜线和不带斜线的接收目录。使用斜杠,它会在父目录中创建一个重复目录。如果没有斜杠,它将 /deploy/ 的内容放置在一个看似未命名的文件夹中。

在此输入图像描述

有人对我在哪里无法获取此部署脚本来实际部署文件有任何指导吗?

答案1

此命令会将内容deploy(但不是目录名称本身)复制到现有目标目录中panda

rsync -ahrvz /home/jellywhat/public_html/deploy/ /home/jellywhat/public_html/panda/

源目录上的尾部斜杠指示rsync复制目录内容,而无需目录名称本身。目标目录的尾部斜杠无关紧要。如果副本不适合您,那么您没有完全按照您在问题中所写的方式输入命令。

请注意,使用没有意义,-z因为您无法在本地副本期间压缩文件。另外,the-r是由 暗示的,-a因此可以省略。


嗯,您现在说您正在创建这个文件来包含该命令。如果您在 Windows 系统上创建它,请确保将其传输为文本文件而不是二进制文件。否则文件行结尾会严重妨碍。

答案2

Linux 中不存在“名称为空的目录”(或文件,就此而言),命令末尾可能有一些垃圾(打印为空)。请注意,您有一个名为的文件a file name<move back to beginning of line><erase to end of line>(这<...>是一个字符序列,告诉您的终端按照指示执行操作)。你不任何东西,但那里有一个名字。新手可以享受无限乐趣;-)

rsync非常对末尾的斜杠挑剔(确实没有任何其他合理的方法来告诉程序应该做什么),请仔细阅读手册。

相关内容