2

我在 RAID1 中有一个 Dlink NAS (dns-323),用于备份家庭照片、视频和其他一些数据。每当我们向 NAS 添加大量新文件时,我也会手动同步到 Atom Linux 小机器上的专用备份驱动器。我终于在 NAS 上丢失了一个驱动器,并且由于我自己的失误,也丢失了整个卷。没问题,这就是备份驱动器的用途。在更换坏驱动器并创建新的 RAID 卷后,我反向使用相同的 rsync 命令将文件恢复到 NAS。这很好,除了命令完成后,我注意到它没有保留时间戳。时间戳保存在 NAS->backup 方向,但不保存在 backup->NAS 方向。

我使用以下选项在 Atom Linux 机器上运行 rsync 命令(这确实保留了时间戳):

rsync --archive --human-readable --inplace --numeric-ids --delete /mnt/dns-323 /mnt/dlink_backup --progress --verbose --itemize-changes

从备份(不保留时间戳)恢复卷的反向命令非常相似:

rsync --archive --human-readable --inplace --numeric-ids --delete /mnt/dlink_backup/dns-323/ /mnt/dns-323/ --progress --verbose --itemize-changes

它实际上恢复了文件,但给出了许多错误,例如:

rsync: failed to set times on "/mnt/dns-323/Rich/Code/.emacs": No such file or directory (2)

我下午大部分时间都在谷歌上搜索并尝试不同的东西,但到目前为止还没有解决我的问题。我使用'touch'命令成功修改了NAS上一两个文件的时间,只是为了证明它可以做到,因为我相信这是rsync必须做的一件事。我已经尝试以我的用户和 root 身份执行此操作。我的意思是我已经跑sudo rsync .....了,而且rsync --rsync-path='/usr/bin/sudo /usr/bin/rsync' ...........前面提到的所有参数都在哪里。我/etc/fstab的 NAS 和备份驱动器分别有以下条目:

# the dns-323
//192.168.1.202/Volume_1 /mnt/dns-323 cifs guest,rw,uid=1000,gid=1000,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
# the dlink_backup drive
/dev/sdb /mnt/dlink_backup ext3 defaults 0 0

如果无法做到,保留时间戳并不是绝对重要的,但它似乎应该是可能的——我只是被难住了。

提前致谢。让我知道我是否可以提供任何其他信息。

4

1 回答 1

2

由于这个,我赢得了我的“风滚草”徽章。 拍拍自己的背

我学到了什么:

我的解决方案

1)从dns-323中删除了左侧硬盘驱动器,它是RAID1卷的一半。

2)使用USB到SATA适配器将此驱动器安装(ext3)到我运行rsync的机器上。

3) 为上述恢复执行了 rsync 命令。我删除了实际上不应该存在的 --delete 选项,并添加了选项 --size-only。仅大小选项使得时间戳基本上是唯一恢复的东西,因为文件已经正确恢复。

4) 从 Atom 机器上卸下左侧驱动器并将该驱动器返回到 dns-323,同时移除右侧驱动器。需要移除正确的驱动器,以便 dns-323 识别 RAID 卷已降级。

5) 将正确的驱动器重新添加到 dns-323 并告诉它重建 RAID 卷。

6)所有时间戳现在都很好。

一个可能的替代解决方案:

我现在已经阅读了足够多的关于 rsync 和 NFS/Samba/cifs 的内容,以了解这个问题可能与 NFS 服务器 (dns-323) 上的权限有关。在内部,dns-323 中的用户/组 ID 为 501/501。我如何将 dns-323 安装在 Atom 盒子上的任何排列都不会允许 rsync 正确设置时间戳。不过,我确实相信将我在 Atom 机器上的用户帐户更改为 uid/gid 为 501/501 会有效。我的用户有默认的 1000/1000,而 root 有 0/0 IIRC。

于 2013-09-09T15:58:10.347 回答