问题是我希望在移动文件时能够看到错误,但看不到权限问题的错误。换句话说 - 我关心文件是否没有完全传输,但不想看到这样的错误:
mv:未能保留`/home/blah/backup/pgsql.tar.gz'的所有权:不允许操作
所以,我想是这样的:mv $backupfile $destination --ignore-permissions
。
备份文件可以是 1 MiB 到 5 GiB 的任何大小,并通过 NFS 传输。
Kyl*_*nes 78
mv
是这项工作的错误工具;你想要cp
然后rm
。由于您将文件移动到另一个文件系统,这正是mv
幕后所做的事情,除了mv
它还试图保留文件权限位和所有者/组信息。这是因为mv
如果它在同一文件系统中移动文件并mv
尝试在两种情况下以相同的方式运行,则会保留该信息。由于您不关心文件权限位和所有者/组信息的保留,因此请不要使用该工具。使用cp --no-preserve=mode
和rm
代替。
Gil*_*il' 28
当您在同一文件系统中移动文件时,mv
将文件从其旧位置分离并将其附加到新位置;元数据(例如权限)保持不变。当您将文件移动到不同的文件系统时,mv
复制文件,尝试复制尽可能多的元数据,然后删除原始文件。
由于您要迁移到不同的文件系统并且不想复制太多元数据,因此您不妨复制文件然后删除原始文件。
cp "$backupfile" "$destination" && rm "$backupfile"
Run Code Online (Sandbox Code Playgroud)
这在一定程度上保留了文件的权限(例如世界可读性、可执行性)。不保留文件的修改时间。使用GNUcp
,您可以使用该--preserve=…
选项来控制更精细地复制哪些元数据,例如--preserve=mode,timestamps
.
您还可以使用rsync
并告诉它您想要保留的内容。该选项的-a
意思是“保留大部分元数据”,如果仅以 root 身份运行,则包括所有者。
rsync -a --no-owner --no-group --remove-source-files "$backupfile" "$destination"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
114730 次 |
最近记录: |