ディレクトリとその内容を新しいディレクトリ名の下の新しい場所にどのようにコピーしますか?


53

私はLinuxコマンドラインを初めて使用しますが、現時点ではcopyコマンドを理解しようとしています。

ディレクトリとそのサブディレクトリと関連ファイルを新しい名前、たとえばdirectory_backupで新しいディレクトリにコピーできるかどうか教えてください。

事前にすべての助けをありがとう

回答:


71

-r(再帰的にコピー)を使用して、新しい名前を指定します

cp -r /path/to/directory /path/to/location/new-name

実際のパスに置き換えます。たとえばstuff、ホームディレクトリから既存のディレクトリにコピーし、backup新しいディレクトリに名前を付けますstuff-backup(このディレクトリが既に存在する場合は、上書きせずにstuffコピーすることに注意してください)。

cp -r ~/stuff ~/backup/stuff-backup

~ホームディレクトリのショートカットである/home/$USERか、/home/zanna私の場合インチ 現在の作業ディレクトリがホームディレクトリの場合は省略できます-これはプロンプトから確認できます

zanna@monster:~$
              ^--the ~ here is where I am - home!

-v冗長フラグを追加して、cp実行されている各コピーをレポートできます...

$ cp -vr stuff backup/stuff-backup
'stuff/thing1' -> 'backup/stuff-backup/thing1'
'stuff/thing2' -> 'backup/stuff-backup/thing2
...

ごめん、ザンナ。あなたのアドバイスを実践し、私がどのように進むかを見ていきます。詳細フラグのアイデアのように。他のコマンドが機能している間、これもレポートとして機能すると仮定します。
エドムント

@Edmuntu何でごめんなさい?はい、多くのコマンドに-vor --verboseフラグがあります:)
Zanna

最初の短い「ありがとう」でごめんなさい....エラーでリターンキーを押してください。
エドムント

10

必要なコマンドは、単にcp「コピー」の略です。

たとえば、次の構文のいずれかで使用できます。

cp SOURCEFILE TARGETFILE
cp SOURCEFILE TARGETDIRECTORY

最初のバリアントでは、ターゲットファイルの新しいファイル名を指定できますが、2番目のバリアントでは、ターゲットディレクトリに同じ名前のコピーが作成されます。もちろん、最初に大文字のプレースホルダーを有効なパスに置き換える必要があります。

ただし、cpデフォルトではファイルに対してのみ動作し、ディレクトリに対しては動作しません。すべてのコンテンツを含む完全なディレクトリを再帰的にコピーするには、-rオプションを追加する必要があります。

cp -r SOURCEDIRECTORY TARGETDIRECTORY

端末にcp入力することman cpで、コマンドの詳細を確認できます。


このコメントセクションには使用されていませんByte Commander ... あなたの答えの非常に明確な概要。利用可能なツールの正しい使用法について適切な指示が与えられたので、これらのディレクトリを整理することを楽しみにしています。優れた。
エドムント

@Edmuntu将来的には、Shiftキーを押しながらEnterキーを押しながらコメントを入力して、1行下に移動します。
-TheOdd

@OwenHinesちょうどそのコメントは、改行と追加の空白を削除し、エディターでそれらを使用しても結果は何も変わりません。
バイトコマンダー

@ByteCommanderああ、そうだね。さて、今彼は知っています。
TheOdd

6

一般的に有用なcpコマンドの代替として、rsyncを使用できます。これには、元のディレクトリ構造のアクセス許可/タイムスタンプを複製するという追加の利点があります。

rsync -av dir/ newdir

-aアーカイブ-v詳細

ソースディレクトリの後ろのスラッシュに注意してください。


5

最初にコピーするディレクトリに変更する方が簡単だと思います。この例では、全員が呼び出したディレクトリに変更し/bootます。誰でも以下のコマンドをコピーしてターミナルに貼り付けることができます。

cd /boot
sudo mkdir /boot_backup
sudo cp -r . /boot_backup
du /boot_backup -h

752K    /boot_backup/extlinux/themes/debian-wheezy
756K    /boot_backup/extlinux/themes
832K    /boot_backup/extlinux
2.5M    /boot_backup/grub/i386-pc
20K     /boot_backup/grub/locale
2.3M    /boot_backup/grub/fonts
7.2M    /boot_backup/grub
565M    /boot_backup

以下のためにcpコマンドカレントディレクトリは次のように識別さ.である/boot我々に変更ディレクトリ。この-rオプションにより、すべてのサブディレクトリを再帰的に含めることができます。

確実に機能するために、この場合du、新しいディレクトリ/boot_backup内のすべてのサブディレクトリと合計ファイルサイズを一覧表示します。

このウォークスルーが終了sudo rm -r /boot_backupしたら、次を使用して、新しいディレクトリとそのサブディレクトリを削除します。


1
これは現在のディレクトリから別のディレクトリにすべてのファイルをコピーする方法を説明しますが、ディレクトリ(およびその内容)を別の名前のディレクトリにコピーする方法に関するOPの質問には完全には答えません。cp -r新しいディレクトリの作成とその中へのすべてのファイルのコピーを処理する短いコマンド(など)があります
-BlueCacti

1
コピーとdirの方法とその内容については説明しますが、違いは、予防策として最初にソースディレクトリに変更することです。cp -rお勧めのとおり、すでに3番目のコマンドラインにあります。チュートリアルは、全員が/bootディレクトリを持ち、自分のマシンでこれを試すことができるという事実に基づいています。cp -r /home/GroundZero/Documents /home/GroundZero/Documents_backup読者が端末にコピーアンドペーストできない場合、読者は変更GroundZeroを加えて作業が増え、エラーが発生する可能性がありました。埋め込まれたチュートリアルで、この回答のKISSに感謝してください。
WinEunuuchs2Unix

1
@GroundZeroを実行しcd ~/Documents/SomeObsucreFolder/2016/Nov/て現在のディレクトリをソースディレクトリとして設定すると、ターミナルプロンプトが変更され、スペルが正しくなりcp -r .、ソースとして使用するとソースディレクトリの再入力が不要になります。それは単に私が良い習慣だと考えるものです。さらに、ソースディレクトリに変更したら、それは何をするのは簡単ですls FIleName1ls FileName2のソースディレクトリ名を繰り返すことなく、あなたがそこにあるバックアップしたいファイルをesnureする、などをlsコマンド。
WinEunuuchs2Unix

5

次のコマンドを使用して、ディレクトリをある場所から別のサブディレクトリにコピーできます。

cp -Rvp /home/edmuntu/data /home/edmuntu/mydata/

コマンドの説明:

  • -R =ディレクトリを再帰的にコピーします
  • v =何が行われているのかを説明する
  • p =許可と所有権をタイムスタンプで保持するのに役立ちます

@Rakesh Chauhanに感謝します。「タイムスタンプを使用して許可と所有権を保持します」??? うわー...私はそれに到達する必要があります!!!! 探求される行コマンドのさらに別の側面。お返事ありがとうございます。
エドムント

4

cp探している機能を実行するコマンドです。コピーの略で、まさにそれを行います。この状況で機能するコマンドは次のとおりです。

cp -R source/ destination/

これにより、source/フォルダとそのすべてのサブディレクトリがにコピーされますdestination/

destination/存在しない場合は作成されます。

-Rフラグが伝え再帰的な、の略でcp、すべてのサブディレクトリをコピーします。


ありがとう@オーウェンハインズ。このような音は間違いなく私のタスクのコマンドです。乾杯
エドムント

1
@Edmuntu喜んで解決します。問題の解決策が見つかったら、その下にあるチェックマークをクリックして、適切な答えをマークしてください。これにより、解決中の質問のページを閲覧する他の人に警告することができます。
TheOdd

1

通常、コピーを作成するときは、デフォルトの作成許可の新しいセットではなく、ファイル許可を同じに保ちます。つまり、cpに-aフラグを使用します。

cp -a file filenew
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.