gpt4 book ai didi

linux - 如何使rsync用实际数据替换符号链接(symbolic link)?

转载 作者:太空宇宙 更新时间:2023-11-04 09:21:49 25 4
gpt4 key购买 nike

我有一些项目使用树型数据结构,在较低的层次上有很多重复。我有大量的数据文件,想用不同的数据集进行整体分析。
我可以使用相对符号链接来组织它们,这对我的分析程序很好,我发现rsync-a可以很好地将整个结构“原样”复制到备份设备。
例如,使用最小的配置,比如。。。

projects/       
project_1/
code_1
data -> ../common_data/data_c
project_2/
code_2
data -> ../common_data/data_b
common_data/
data_a
data_b
data_c

相对链接指向正确的位置,如果我
rsync -a projects/ projects_backup_path/

然后将整个结构转移到备份,仍然可以浏览,然后再次移动,这是很好的。
有时我还想把一个完整的项目交给别人,为此我需要用真实的数据来重建它,而不是符号链接。
如果我想把project_2放在一根棍子上,包括它的所有数据,我希望能够键入
rsync --replace-links-with-data project_2 stick

最后在我的U盘上有如下结构
project_2/
code_2
data_b

从阅读手册页,以及这里和其他地方关于rsync的问题来看,-K,-L或-K或-kL开关可能是要这样做的。
  -l, --links                 copy symlinks as symlinks
-L, --copy-links transform symlink into referent file/dir
...
-k, --copy-dirlinks transform symlink to dir into referent dir
-K, --keep-dirlinks treat symlinked dir on receiver as dir

但是,当我尝试使用这些文件复制时,会收到“跳过目录xxx”消息,并且不会发生传输。运行rsync时,相对位置x x x因当前目录而异,但它始终是我试图展开的项目x目标的绝对位置。我错过了什么?
也许是一个相关的问题。我怎么知道什么不起作用?我仍然是个linux迷。
我知道有不同的方式来安排我的项目,代码和数据,但这适合我和我的客户目前。我知道还有其他方法可以“实现”链接,例如,我可以轻松编写一个python脚本来完成任务。但是,如果rsync已经这样做了,那么我想找出要使用的开关,而不是编写新的东西。
我很感激这听起来像个愚蠢的问题。我会坦然承认,当我读到手册页,尝试我认为能奏效的东西时,我觉得自己像个白痴。我们都去过那里。当我有更多的经验时,我将能够理解手册页的上下文。对我来说,获得这种经验是一个漫长的艰难过程。我喜欢命令行,我确实喜欢,但只有当文档与行为匹配时,以及没有标记的角落案例时

最佳答案

使用说明书。类型man rsync

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

-l, --links copy symlinks as symlinks
-L, --copy-links transform symlink into referent file/dir
--copy-unsafe-links only "unsafe" symlinks are transformed
--safe-links ignore symlinks that point outside the tree
--munge-links munge symlinks to make them safer

-r, --recursive recurse into directories

关于linux - 如何使rsync用实际数据替换符号链接(symbolic link)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41038499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com