2009-10-27 19:46:06 +0000 2009-10-27 19:46:06 +0000
423
423

どのようにして cp でコピーして、隠しファイルと隠しディレクトリとその内容を含むようにするのですか?

cp -r ディレクトリ内のファイルとディレクトリを 絶対的にすべてコピーさせるにはどうしたらいいですか?

  • 上記を含むフラグを持つ一つのコマンドであること。

  • パターンマッチングに頼る必要は全くありません。どのフラグを使用する必要がありますか?

回答 (14)

492
492
492
2011-12-12 22:00:01 +0000

新しいフォルダ(または1つを作成しようとしている)を作成し、フォルダが

mkdir /home/<new_user>
cp -r /etc/skel/. /home/<new_user>

&001

これは、最初の行で作成された既存のフォルダに/etc/skelから再帰的にすべてのファイル/フォルダをコピーします。

281
281
281
2009-10-27 19:55:27 +0000

ファイルを指定しない:

cp -r /etc/skel /home/user

(/home/userは既に存在していない必要があります。そうしないと/home/user/skelを作成してしまうので注意)

95
95
95
2015-09-08 21:50:45 +0000

これを行う正しい方法は、-T (--no-target-directory)オプションを使用して、(末尾のスラッシュやアスタリスクなどを除いて)フォルダを再帰的にコピーすることです:

cp -rT /etc/skel /home/user

これは、/etc/skelの内容を/home/user(隠しファイルを含む)にコピーし、フォルダが存在しない場合には/home/userを作成します。

68
68
68
2013-02-06 01:14:47 +0000

bash 自体に良い解決があります、それは shell option を持っています、あなたは cpmv を等できます

shopt -s dotglob # for considering dot files (turn on dot files)

および shopt -u dotglob # for don't considering dot files (turn off dot files)

上記の解決は bash

NOTE:

shopt # without argument show status of all shell options
-u # abbrivation of unset 
-s # abbrivation of set
``` の標準です
29
29
29
2014-02-20 13:18:25 +0000

rsync の使用:

rsync -rtv source_folder/ destination_folder/

7
7
7
2014-08-28 17:46:19 +0000

rsyncは良いですが、別の選択:

cp -a src/ dst/

メインヘルプから:

-a, --archive
          same as -dR --preserve=all

   -d same as --no-dereference --preserve=links

   -R, -r, --recursive
          copy directories recursively
5
5
5
2018-06-06 16:13:41 +0000
cp -r /etc/skel/{.,}* /home/user

式にはすべてのファイルとディレクトリが含まれています(ドットで始まるものもあります)。

4
4
4
2016-01-17 17:32:26 +0000
rsync -aP ./from/dir/ /some/other/directory/

ssh のコピーもできます

rsync -aP ./from/dir/ username@remotehost:/some/other/directory/

いろいろなフラグが使えます。-a, –archive # archive (-rlptgoD)

-r, --recursive
-l, --links # copy symlinks as links
-p, --perms # preserve permissions
-t, --times # preserve times
-g, --group # preserve group
-o, --owner # preserve owner
-D # --devices --specials

--delete # Delete extra files

You may want to add the -P option to your command.

--partial # By default, rsync will delete any partially transferred file if the transfer is interrupted. In some circumstances it is more desirable to keep partially transferred files. Using the --partial option tells rsync to keep the partial file which should make a subsequent transfer of the rest of the file much faster.

-P # The -P option is equivalent to --partial --progress. Its purpose is to make it much easier to specify these two options for a long transfer that may be interrupted.

Rsync man page

4
4
4
2013-05-16 08:38:46 +0000

ソースディレクトリとターゲットディレクトリが同じ名前であれば、たとえターゲットディレクトリが存在していても、次のように入力するだけでOKです:

cp -R /etc/skel /home/

これで /etc/skel ディレクトリが /home/ にコピーされます。

3
3
3
2015-07-24 13:34:27 +0000

同じ問題を解決するためにグーグルで検索してここに来たのですが、findで簡単にできることに気がつきました。シェルやインストールされていない特殊なユーティリティに依存しないという利点があります。

find /etc/skel/ -mindepth 1 -exec cp -r {} /home/username/ \;

最後のスラッシュを使ってみましたが、うまくいきませんでした。

2
2
2
2018-01-30 20:42:49 +0000

この問題に対する私の解決策は、すべてのファイル(.ファイルを含む)をターゲットディレクトリにコピーしなければならないときのパーミッションを保持するは次のとおりです。(既に存在する場合は上書き)

yes | cp -rvp /source/directory /destination/directory/

yes は、コピー先のファイルを自動的に上書きするためのもので、再帰的に r、冗長に v、パーミッションを保持するためのものです。

ソースパスが p で終わっていないことに注意してください。

2
2
2
2015-05-12 20:00:58 +0000

コマンドラインのトリックがあることに注意してください (少なくとも sh, bash, ksh で動作します)。from_ ディレクトリの後にスラッシュを付けてください。これにより、from ディレクトリの内容を to ディレクトリに流すことができます (皮肉なことに、私がこのトリックを初めて知ったのは rsync を使っていたときでした)。

1
1
1
2019-02-13 10:18:49 +0000

cp は常に隠しファイルをコピーするとは限らないことを見てきました。

-2
-2
-2
2016-12-14 21:57:06 +0000

少なくともK3b 2.0.3の時点では、ディレクトリがプロジェクトに追加されたときにポップアップする質問ボックスがあります。いいね!