我有一个用于rsync
在 Archlinux 中备份文件的 bash 脚本。我注意到rsync
无法从 复制文件/sys
,但cp
工作正常:
# rsync /sys/class/net/enp3s1/address /tmp
rsync: read errors mapping "/sys/class/net/enp3s1/address": No data available (61)
rsync: read errors mapping "/sys/class/net/enp3s1/address": No data available (61)
ERROR: address failed verification -- update discarded.
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]
# cp /sys/class/net/enp3s1/address /tmp ## this works
Run Code Online (Sandbox Code Playgroud)
我想知道为什么会rsync
失败,是否可以用它复制文件?
$ cp --no-preserve=mode --parents /sys/power/state /tmp/test/
$ cp --no-preserve=mode --parents /sys/bus/cpu/drivers_autoprobe /tmp/test/
Run Code Online (Sandbox Code Playgroud)
两行中的第二行将失败
cp: cannot make directory ‘/tmp/test/sys/bus’: Permission denied
Run Code Online (Sandbox Code Playgroud)
原因是它/tmp/test/sys
是在没有写权限的情况下创建的(和原来的一样/sys
);正常人mkdir /tmp/test/sys2
不会这样做:
$ ls -la /tmp/test/
total 32
drwxr-xr-x 3 robert.siemer domain^users 4096 Oct 11 13:56 .
drwxrwxrwt 13 root root 20480 Oct 11 13:56 ..
dr-xr-xr-x 3 robert.siemer domain^users 4096 Oct 11 13:56 sys
drwxr-xr-x 2 robert.siemer domain^users 4096 Oct 11 13:59 sys2
Run Code Online (Sandbox Code Playgroud)
我怎样才能指示cp
不保留模式,除了--no-preserve=mode
,它不像我认为的那样工作......?
或者我应该使用哪种工具来复制文件列表而不保留符号链接之外的“任何东西”?