我试图将 /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
是非常对末尾的斜杠挑剔(确实没有任何其他合理的方法来告诉程序应该做什么),请仔细阅读手册。