我想找到那些我无法复制到另一个位置的文件,以便我可以进行 Rsync。我有一个外部硬盘驱动器和我的系统的硬盘驱动器。外部硬盘上有我的系统丢失的文件。我正在想如何做到这一点。
我可以找到那些权限被拒绝的文件/目录 - 消息
find / ! -perm /u+r
一些权限在哪里
drwx------ 1 501 root 6 Oct 22 2014 PortableCV_WebCruiter_20141022
以下命令可能适用于命令行fu.com,因为远程数据在这里可以被视为外部硬盘
rsync --rsync-path 'sudo rsync' username@source:/folder/ /local/
哪个
使用 sudo 以 root 身份 rsync 远程数据 如果您的用户在远程机器上有 sudo,则您可以以 root 身份 rsync 数据,而无需以 root 身份登录。如果远程机器不允许 root 通过 SSH 登录(这是常见的安全限制),这将非常有用。
如何在外部硬盘和系统硬盘之间同步存在权限被拒绝问题的文件?
答案1
如果你想跳过不可读的文件:
find /external/hd/folder ! -readable -print >unreadable_files
rsync -a --exclude-from=unreadable_files /external/hd/folder/ /local/folder
这假设您使用的是 GNU find
,并且您的文件名没有嵌入换行符。
如果要复制所有文件,无论它们在外部磁盘上是否可读:
sudo rsync -a /external/hd/folder/ /local/folder
sudo chown -R masi:masi /local/folder
这假设您有足够的权限来运行sudo rsync
和sudo chown
。
答案2
如果您将外部硬盘安装到本地系统,那么它就不是远程的。除非我误解了,您的 HDD 正在运行 rsync 守护进程并通过网络连接?但请忘记这一点,您可以在本地安装驱动器吗?正如 @mjturner 所说,您所需要做的就是确保rsync
以 root 身份运行并且它是直接副本sudo rsync -a /mount/for/hdd/folder/ /local/
?
答案3
为什么不直接将rsync
外部硬盘上的所有文件复制到系统硬盘上呢?它不会重新复制已经存在的文件。
当然,请务必以 root 身份进行复制,以确保复制所有文件并保留权限。