サイトアイコン ktykwsk.com

パーミッションを維持しつつ隠しファイルを含むディレクトリをコピー

また使う機会がありそうなのでメモ。

このような隠しファイルがあるフォルダ a があります。

$ ls -al a
total 0
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:20 .
drwxr-xr-x  3 ktykwsk  staff   96  3  9 13:14 ..
-rwxrwxrwx  1 ktykwsk  staff    0  3  9 13:15 .hidden
-rwxrwxrwx  1 ktykwsk  staff    0  3  9 13:20 show

このフォルダを複製してフォルダ b を作ります。

$ cp -r a b
$ ls -l
total 0
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:20 a
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:24 b
$ ls -al b
total 0
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:29 .
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:14 ..
-rwxr-xr-x  1 ktykwsk  staff    0  3  9 13:29 .hidden
-rwxr-xr-x  1 ktykwsk  staff    0  3  9 13:29 show

ファイル.hidden と show のパーミッションが644になってしまいました。パーミッションを維持する為に -a オプションでコピーしましょう。

$ cp -a a c
$ ls -al c
total 0
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:35 .
drwxr-xr-x  5 ktykwsk  staff  160  3  9 13:14 ..
-rwxrwxrwx  1 ktykwsk  staff    0  3  9 13:15 .hidden
-rwxrwxrwx  1 ktykwsk  staff    0  3  9 13:20 show

次にフォルダ d を作成し、その中にaの内容を複製してみます。

$ mkdir d
$ ls -al
total 0
drwxr-xr-x  6 ktykwsk  staff  192  3  9 13:14 .
drwx------@ 9 ktykwsk  staff  288  3  9 13:14 ..
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:20 a
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:29 b
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:35 c
drwxr-xr-x  3 ktykwsk  staff   96  3  9 13:36 d
$ cp -a a/* d/
$ ls -al d
total 0
drwxr-xr-x  3 ktykwsk  staff   96  3  9 13:36 .
drwxr-xr-x  6 ktykwsk  staff  192  3  9 13:14 ..
-rwxrwxrwx  1 ktykwsk  staff    0  3  9 13:20 show

“.” が先頭に付いた隠しファイルがコピーされていませんね。

ファイルのパーミッションを維持しつつ隠しファイルをコピーする場合、以下のようにコピー元ファイルを指定します。

$ cp -a <コピー元ディレクトリパス>/. <コピー先ディレクトリパス>

コピー元ディレクトリのパスの後ろに “/.” と付ける点がポイントです。

フォルダeを作成し、上記のコマンドで a フォルダの内容を複製します。

$ mkdir e
$ ls -al
total 0
drwxr-xr-x  7 ktykwsk  staff  224  3  9 13:14 .
drwx------@ 9 ktykwsk  staff  288  3  9 13:14 ..
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:20 a
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:29 b
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:35 c
drwxr-xr-x  3 ktykwsk  staff   96  3  9 13:36 d
drwxr-xr-x  2 ktykwsk  staff   64  3  9 13:41 e
$ cp -a a/. e/
$ ls -al e/
total 0
drwxr-xr-x  4 ktykwsk  staff  128  3  9 13:20 .
drwxr-xr-x  7 ktykwsk  staff  224  3  9 13:14 ..
-rwxrwxrwx  1 ktykwsk  staff    0  3  9 13:15 .hidden
-rwxrwxrwx  1 ktykwsk  staff    0  3  9 13:20 show

パーミッションを維持しつつ、隠しファイルをコピー出来ています。


モバイルバージョンを終了