linux – 多个目录的原子复制

linux – 多个目录的原子复制,第1张

概述这个问题与Web应用程序的部署有关. 简介(你可以跳过) 我正在使用django,我的托管服务提供商设置他们的django支持的方式最终导致webapp分散在至少三个位置: > / something /< my_apps> /中的实际应用程序代码 > / something /< my_site> /中的网站设置/网址/模板 > / something_else / media /中的css,j 这个问题与Web应用程序的部署有关.

简介(你可以跳过)

我正在使用django,我的托管服务提供商设置他们的django支持的方式最终导致webapp分散在至少三个位置:

> / something /< my_apps> /中的实际应用程序代码
> / something /< my_site> /中的网站设置/网址/模板
> / something_else / media /中的CSS,javascript和其他“媒体”

所以当我部署/升级网站时,我需要一次更新几个目录.

实际问题:

有没有办法让原子文件复制?我无论如何都不是linux系统的“专家”,所以请原谅我的无知.

复制 *** 作涉及几个目录树,基本上是两个或三个:

copy _tree1 to tree1copy _tree2 to tree2

原子,我的意思是:

>它要么完全复制,要么根本不复制.它永远不应该处于某种复制状态但有些失败状态.
>这是在尽可能短的时间内完成的.理想情况下,系统在正在进行的过程中看到副本时,应该没有任何时间点,它要么看到旧版本的文件,要么看到新版本;在任何时候它都不会看到文件A的旧版本,而是文件B的新版本.如果这不完全可能,那么它应该不会超过几毫秒.

我的想法是有一些像双缓冲的东西:我在暂存区域准备一切,例如_tree_x,然后将它复制移动到tree_x,应该是一个简单地改变磁盘上指针的原子 *** 作.

我认为单个这样的复制移动 *** 作在linux中是原子的(不是吗?),但是我需要几个这样的 *** 作才是原子的;我希望他们被视为一次移动 *** 作.

解决方法 我认为你在一个临时区域的正确轨道上.我不知道任何原子命令,但如果你暂存你的文件,然后使用脚本删除第一个目录并移动(不复制)第二个目录,并为所有三个目录执行,它应该非常快.

或者,您可能想要使用符号链接.那样你可以大致:

/version/22/<my-apps>/version/22/<my-site>/version/22/<my-media>

并使用相同的子目录部署/ version / 23目录.然后,实际文件会去(并且再次,为了速度,你需要一个脚本),你可以使用符号链接,这样当任何人进入最新页面时,他们会获得当前的任何版本(这一切都发生了)透明,他们不知道).这样做的好处是,在您决定删除之前,您的旧工作仍然存在. [虽然,授予,版本控制系统更适合用于保持较旧的工作.]

您必须检查1)您可以运行脚本(以及Web用户不能这样做的方式!),以及2)您可以使用符号链接(因为某些Web服务器配置为不遵循它们.)

总结

以上是内存溢出为你收集整理的linux – 多个目录的原子复制全部内容,希望文章能够帮你解决linux – 多个目录的原子复制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1035234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存