[Linux] データのコピーコマンドまとめ

メソ
2025-03-07
2025-03-07

サーバ上のファイルやディレクトリなどのデータを複製する際、コピーや同期、転送をサーバ内外で行うことがあります。コピー方法によってコマンドオプションや組み合わせが異なるので、備忘録としてまとめておこうと思います。

目次

  1. コピー
  2. 転送
  3. 同期

1. コピー

サーバ内でファイルやディレクトリのコピーする際、cpやddコマンドなどを利用します。

ファイル

cpコマンドでコピー元のファイルとコピー先のファイルを指定します。
ディレクトリが異なる場所にデータがある場合は、パスも指定しておきます。

cp [コピー元] [コピー先]
ディレクトリ

ディレクトリをコピーする際も同様にcpコマンドが利用できます。
-rオプションで再帰的なコピーが可能になります。

cp -r [コピー元] [コピー先]
ブロック単位でのコピー

ddコマンドではブロック単位でのコピーが可能です。ファイルのコピーもできますが、バックアップ等でディスクデータのコピーが必要な場合にもddコマンドは便利です。

 dd if=[コピー元] of=[コピー先]

2. 転送

データ転送時にはscpやrsyncなどのコマンドを利用します。また、先ほどのddコマンドではsshを併用することで、ディスクデータの転送も同時に行うことができます。

ファイル/ディレクトリ
scp -i [秘密鍵のパス] [転送元パス] [転送先パス]

上記以外にncコマンドでもデータの転送が可能です。ネットワーク越しにデータのやり取りを行うため、転送元、転送先の両方でコマンドを実行する必要があります。

転送元
nc ホストのIP ポート < [転送したいデータ名]
転送先
nc ホストIP ポート > [受信したいデータ名]
ディスクイメージ

リモートサーバなどにディスクイメージを転送したい場合、sshでデータを送ることができます。この時、イメージのコピーと転送を一緒に実行しておくと便利です。

dd if=[コピーしたいディスクデータ名] of=[生成されるディスクデータ名] | user@[転送先IP]:[転送先のパス] dd of=[転送先データ名] ds=[転送時のブロックサイズ]

3. 同期

データバックアップ等のためにディレクトリの同期を行う際は、rsyncを用います。
同期先はローカル、リモートどちらも可能です。オプションを付けておくことで、同期元ファイルのパーミッションやグループなどを保持することができます。

ローカルサーバ内での同期
rsync -av [同期元] [同期先]
リモートサーバとの同期(ローカル→リモートサーバ)

ローカルサーバのデータをリモートサーバに同期させる場合、以下の順になります。

rsync -avz  [ローカルファイルのパス] -e 'ssh -i [秘密鍵 のパス]' user@[同期先IP]:[同期先のパス]
リモートサーバとの同期(リモート→ローカルサーバ)

リモートサーバのデータをローカルサーバに同期させる場合、以下の順になります。

rsync -avz   -e 'ssh -i [秘密鍵 のパス]' user@[同期元IP]:[同期元のパス] [ローカルファイルのパス]

 

ファイルやディレクトリのコピー、部分的なデータの同期等が必要になった際に役立つと幸いです。