我正在使用rsync
复制一些源代码。复制的代码一定不能因为我在代码编辑时的错误而在目标地方修改。所以我设置了--chmod=u-w
标志以使其在复制后只读。
rsync --delete -a --chmod=u-w
Run Code Online (Sandbox Code Playgroud)
首先是运作良好。但是从第二次rsync
不能执行复制,因为目的地是只读的。
rsync: delete_file: unlink "/path/file1" failed: Permission denied (13)
rsync: delete_file: unlink "/path/file2" failed: Permission denied (13)
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-42/rsync/main.c(992) [sender=2.6.9]
Run Code Online (Sandbox Code Playgroud)
我相信有一些功能可以强制rsync
覆盖任何文件,无论是只读还是可写。
我怎样才能做到这一点?
复制的代码不能在目的地修改
错误:复制的文件必须在目标位置修改,当 rsync 下次运行时。Unix 权限无法表达“只能由 rsync 修改”,除非您以专用用户身份运行该 rsync 作业。
Rsync 无法删除这些文件,因为包含它们的目录是只读的。为避免这种情况,请添加F
前缀以--chmod
仅应用于常规文件。
rsync --delete -a --chmod=Fa-w
Run Code Online (Sandbox Code Playgroud)
不更改文件权限可能会更好地为您服务。如果您需要提供对文件的只读访问权限,请以专用用户身份运行 rsync 作业,并授予其他用户对该目录树的只读权限(--chmod=go-w
可能会有所帮助)。或者,在只读视图中公开目录树,例如使用bindfs(有关不同场景中的用法示例,请参阅此答案)。
归档时间: |
|
查看次数: |
12587 次 |
最近记录: |