私は Debian を使用しており、個人ファイルと設定ファイル (ユーザーの /home フォルダ全体) のバックアップを新しいコンピュータに再インストールしたいと考えています。
理解できない理由ですが、バックアップ全体のすべてのファイルに同じ権限 (777 / -rwxrwxrwx) が設定されています。これは、一部の構成ファイルに対しては権限が厳しすぎます。たとえば、バックアップを再インストールした後、初めて ssh を使用したときは、ssh を起動するために「chmod 600 ~/.ssh/config」を実行する必要がありました。
なぜこのようなことが起こるのか本当にわかりません。 アクセス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-------)