【Linux系列】rsync和mv

csdn

博客目录

      • 1. 操作性质不同
      • 2. 对源文件的影响
      • 3. 使用场景
      • 4. 示例对比
        • 使用 `rsync -a`:
        • 使用 `mv`:
      • 5. 注意事项
      • 总结

rsync -a /data/software/build0713/dist/ /usr/share/nginx/html/mv 是两种完全不同的操作,主要区别如下:


1. 操作性质不同

  • rsync -a

    • 复制同步:将源目录(/data/software/build0713/dist/)的内容递归复制到目标目录(/usr/share/nginx/html/),保留文件属性(权限、时间戳等)。
    • 增量更新:仅同步有差异的文件(如果目标目录已存在部分文件)。
    • 不删除源文件:源目录的内容保持不变。
  • mv

    • 移动/重命名:将源目录(或文件)物理移动到目标路径,源路径的内容会被移除。
    • 覆盖风险:如果目标目录已存在同名文件,默认会直接覆盖(除非使用 -i 交互选项)。

【Linux系列】rsync和mv_第1张图片

2. 对源文件的影响

  • rsync -a:源文件保留,只是复制到目标位置。
  • mv:源文件被移动到目标位置后,源路径的文件会消失。

3. 使用场景

  • rsync -a

    • 需要保留源文件的备份或同步场景(例如部署时保留构建目录的原始内容)。
    • 需要增量更新目标目录(避免重复传输未修改的文件)。
  • mv

    • 需要直接替换目标目录(例如快速更新网站内容,无需保留旧文件)。
    • 需要释放源目录的存储空间。

4. 示例对比

使用 rsync -a
rsync -a /data/software/build0713/dist/ /usr/share/nginx/html/
  • 结果:
    • /usr/share/nginx/html/ 包含 dist/ 的所有内容。
    • /data/software/build0713/dist/ 仍保留原始文件。
使用 mv
mv /data/software/build0713/dist/* /usr/share/nginx/html/
  • 结果:
    • /usr/share/nginx/html/ 包含 dist/ 的内容。
    • /data/software/build0713/dist/ 变为空目录。

5. 注意事项

  • 目录斜杠 / 的影响

    • rsync 中,源路径末尾的 / 表示“同步目录内的内容”,而非目录本身。若省略 /,会将 dist 目录本身同步到目标路径(生成 /usr/share/nginx/html/dist)。
    • mv 中,斜杠不影响行为,但需注意通配符 * 的使用。
  • 权限问题

    • rsync -a 需要读写权限,且保留文件属性(需足够权限)。
    • mv 可能需要目标目录的写权限。

总结

  • 需要保留源文件且增量更新 → rsync -a
  • 需要彻底替换目标目录并删除源文件 → mv
  • 如果是部署静态网站,两者均可,但 rsync 更安全(避免误删文件)。

觉得有用的话点个赞 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!

如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!

Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!

img

你可能感兴趣的:(s5,Linux学习,linux,服务器,java)