我正在使用 Debian,并且想要在新计算机上重新安装个人和配置文件(用户的整个 /home 文件夹)的备份。
由于某种原因我无法理解,我整个备份的每个文件都具有相同的权限:777 / -rwxrwxrwx。这对于某些配置文件来说过于宽松。例如,在重新安装备份后第一次使用 ssh,我必须执行“chmod 600 ~/.ssh/config”才能启动 ssh。
我真的不知道为什么会这样。我使用rsync -av
应该保留权限进行备份,并且我的外部硬盘驱动器使用的是 ext4 文件系统。
不管怎样,我只有这个备份,不可能再做一个(电脑坏了)。我正在寻找一种方法来自动将文件和文件夹设置为默认设置(例如我猜 .ssh/config 文件是 600)。
有没有办法自动实现这一点?
答案1
干得好;
ORIG_DIR="/bla/bla"
BKUP_DIR="/bla/dee"
:~$ find $ORIG_DIR | while read aline; do perm=$(stat "$aline" | grep "Access: (" | sed 's/Access: (//;s/\/.*//'); chmod -v $perm "$BKUP_DIR/$aline"; done
我举了一个例子;
:~$ mkdir ooh
:~$ mkdir noo
:~$ touch ooh/mog1 ooh/mog2 ooh/mog3
:~$ rsync -av ooh noo
sending incremental file list
ooh/
ooh/mog1
ooh/mog2
ooh/mog3
sent 245 bytes received 77 bytes 644.00 bytes/sec
total size is 0 speedup is 0.00
:~$ ls -la noo/ooh/
total 32
drwxr-xr-x 2 mike mike 4096 Oct 28 23:09 .
drwxr-xr-x 3 mike mike 4096 Oct 28 23:10 ..
-rw-r--r-- 1 mike mike 0 Oct 28 23:09 mog1
-rw-r--r-- 1 mike mike 0 Oct 28 23:09 mog2
-rw-r--r-- 1 mike mike 0 Oct 28 23:09 mog3
:~$ chmod 700 ooh/mog1
:~$ chmod 600 ooh/mog2
:~$ chmod 555 ooh/mog3
:~$ find ooh
ooh
ooh/mog1
ooh/mog3
ooh/mog2
:~$ find ooh | while read aline; do perm=$(stat "$aline" | grep "Access: (" | sed 's/Access: (//;s/\/.*//'); chmod -v $perm "noo/$aline"; done
mode of 'noo/ooh' retained as 0755 (rwxr-xr-x)
mode of 'noo/ooh/mog1' changed from 0644 (rw-r--r--) to 0700 (rwx------)
mode of 'noo/ooh/mog3' changed from 0644 (rw-r--r--) to 0555 (r-xr-xr-x)
mode of 'noo/ooh/mog2' changed from 0644 (rw-r--r--) to 0600 (rw-------)