我正在尝试将一些现有备份从一个系统转移到另一个系统。较旧的备份系统似乎已设法备份特殊文件,如 /dev/hda、/dev/tty0 和 /dev/null,这些文件看起来像是作为操作系统构建过程的某个部分创建的。
所以我尝试让rsync他们使用新机器,但我不断收到大量消息,例如:
跳过非常规文件“machineX/latest/home/machineX/build/image/rh62/dev/agpgart”
我使用的命令是:
rsync -avz /oldbackups/machineX/ newbackups:~/machineX/
Run Code Online (Sandbox Code Playgroud)
AFAIK:
-a (archive) 应该是指 -rlptgoD
-D 应该是什么意思 --specials --devices
我检查了文件:
$ ls -la machineX/latest/home/machineX/build/image/rh62/dev/agpgart
crw-rw-r-- 1 500 500 10, 175 Feb 4 2000 machineX/latest/home/machineX/build/image/rh62/dev/agpgart
$ file machineX/latest/home/machineX/build/image/rh62/dev/agpgart
machineX/latest/home/machineX/build/image/rh62/dev/agpgart: character special
Run Code Online (Sandbox Code Playgroud)
所以这些是--special交换机应该涵盖的特殊文件,不是吗?
为什么它仍然跳过这些文件?
作为参考,我将 rsync 与这些详细信息一起使用:
$ rsync --version
rsync version 3.0.9 protocol version 30
Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 32-bit timestamps, 64-bit …Run Code Online (Sandbox Code Playgroud) 当尝试在 Ubuntu 上使用 NetworkManager 的 ModemManager 修复 DNS 问题时,我在systemd-resolve --status连接时的输出中发现了这种差异。(pingip 有效,手动编辑/etc/resolv.conf可以解决问题,设置 FallbackDNS 也可以解决问题,但都有副作用。
工作安装 - PPP 调制解调器(Ubuntu 17.10)
Link 3 (wwp0s20u6)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 198.142.0.51
211.29.132.12
Run Code Online (Sandbox Code Playgroud)
安装损坏 - PPP 调制解调器(相同硬件 - Lubuntu 17.04)
Link 2 (wwp0s20u6)
Current Scopes: LLMNR/IPv4 LLMNR/IPv6
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
Run Code Online (Sandbox Code Playgroud)
它们都是 Ubuntu 的版本,并且硬件相同。中的网络连接配置/etc/NetworkManager/system-connections …
我正在尝试使用--copy-devices补丁rsync复制整个磁盘驱动器并将其作为映像存储在另一台机器上。
该副本似乎已正确运行,但是,当我rsync再次使用相同的值运行时,它似乎每次都会再次复制一些数据。
我跑了rsync,出现了冗长的问题,得到了这个:
$ sudo rsync -vvz --partial --progress --copy-devices /dev/sdb me@otherserver:/backupdisks/mydisk.img
opening connection using: ssh -l me otherserver rsync --server -vvze.Lsfx --partial --copy-devices . /backupdisks/mydisk.img (11 args)
me@otherserver's password:
delta-transmission enabled
sdb
320,071,851,520 100% 63.47MB/s 1:20:09 (xfr#1, to-chk=0/1)
total: matches=2441955 hash_hits=2441955 false_alarms=204015955 data=0
sent 188 bytes received 21,979,001 bytes 2,837.31 bytes/sec
total size is 0 speedup is 0.00
Run Code Online (Sandbox Code Playgroud)
我知道 rsync 按时间确定更改,但是磁盘在 rsync 之间没有更改(无论如何它如何确定磁盘的修改时间?)但是,远程映像上的时间每次都会更新。所以这可能是问题所在。
另一种可能性是磁盘有一个坏扇区,它每次都返回不同的值,并否定正在使用的任何校验和。
我的问题有两个: …
这是一个必然的问题,当启用复制设备时,如何验证 rsync 是否正确复制了设备?
当重新尝试传输(使用--copy-devices)标志和两个级别的详细程度时-vv,我得到了以下输出:
sudo rsync -vvz --partial --progress --copy-devices /dev/sdb me@otherserver:/backupdisks/mydisk.img
delta-transmission enabled
sdb
320,071,851,520 100% 63.47MB/s 1:20:09 (xfr#1, to-chk=0/1)
total: matches=2441955 hash_hits=2441955 false_alarms=204015955 data=0
sent 188 bytes received 21,979,001 bytes 2,837.31 bytes/sec
total size is 0 speedup is 0.00
Run Code Online (Sandbox Code Playgroud)
“matches”、“hash_hits”和“false_alarms”值是什么意思,“data=0”是什么意思?
转账成功还是不成功?
有时,我会尝试调试启动速度非常快的(通常是串行)设备。
如果我让设备运行,我可以使用以下方法连接到它:
minicom -D /dev/ttyUSB0
然后,如果设备断开连接,minicom 将保持打开状态,直到重新连接。
即使设备尚未创建,是否有开关告诉 minicom 在这种“等待”状态下打开?
我试过了-o(不要初始化。)
在 Vidar Holen 的博客文章Useless Use of dd 中,他认为这dd实际上是无用的,主要是因为一切都是文件,并且文件可以通过管道传输。
我们还经常在所有 *nix 站点上看到积极劝阻使用cat.
然而,随后Vidar提出了这个例子:
# Rip a cdrom to a .iso file
cat /dev/cdrom > myfile.iso
Run Code Online (Sandbox Code Playgroud)
...我想知道,是否可以在不使用的cat情况下做到这一点?
显然,POSIX shell 假设第一组字符是一个命令(因此“[”=“test”等),这在具有就地运算符的现代语言中是不寻常的。而且,作为一个 shell 实际上是一个解释器,为什么我们没有达到cat和dd都是多余的地步?
是否有任何基于 POSIX 的 shell 已经完全实现了就地运算符,/dev/cdrom > myfile.iso以至于足以将数据从设备复制到文件?
或者
POSIX 规范中是否有某些内容使这种功能变得不可能?
请注意,此问题与 UUOC 问题略有不同,因为示例仍然使用开头的命令(“<”)而不是就地运算符。所以它仍然符合 first-word-is-a-command 规则。
(顺便说一句,我个人喜欢 dd 因为,如果没有它,说威尔士语会变得不那么有趣。:-p)