
あるディレクトリから別のディレクトリにすべてのファイルとフォルダをコピーしたいそれなし宛先ディレクトリの権限を変更します。
元のフォルダーは 555 で、宛先フォルダーは 775 です。以下のコマンドを使用すると、宛先が 555 に変更されます。これは望ましくありません。
cp -r /origin/. /destination
/originの内容をコピーするための正しい構文は何ですか?/destinationが775のままになるように
sudo がありません。
答え1
使用rsync
:
rsync -rlD /origin/ /destination/
重要なのは、/
の末尾にある ですorigin/
。これは、ディレクトリ自体ではなく、ディレクトリの内容をコピーするように rsync に指示します。この方法では、最上位ディレクトリはコピーされず、/destination
そこに追加されたファイル以外は変更されません。
スイッチの説明:
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-r, --recursive recurse into directories
-l, --links copy symlinks as symlinks
-p, --perms preserve permissions
-t, --times preserve modification times
-g, --group preserve group
-o, --owner preserve owner (super-user only)
-D same as --devices --specials
--devices preserve device files (super-user only)
--specials preserve special files
答え2
ディレクトリ自体をコピーするのではなく、その中のファイルをコピーします。
cp -r /origin/* /destination
ドット ファイル (名前が 文字で始まるファイル) がある場合.
、 はそれらをスキップするため、それらはコピーされません*
。cp -r /origin/.[!.]* /destination
ドット ファイルをコピーするには を使用し、cp -r /origin/..?* /destination
名前が で始まるファイルがある場合は(親ディレクトリを指定する 自体..
を除く) を使用します。..