rsyncコマンドで特定のディレクトリを除外してコピーする

scpコマンドで特定のディレクトリを除外してコピーしたい場合、scpコマンドでは直接そのような機能がないようです。
scpコマンドの代わりにrsyncコマンドを使用して特定のディレクトリを除外してディレクトリをコピーします。rsyncは、ファイルやディレクトリのコピー時に特定のディレクトリを除外する機能があり、効率的にバックアップや同期を行うことができます。

ここでは、/home/admin/ディレクトリ内の「/home/admin/log」と「/home/admin/tmp」ディレクトリを除外してコピーする方法を説明します。

/home/admin/ディレクトリ構成を確認します

ls -l /home/admin/
total 140
drwxr-xr-x  2 ex-admin ex-admin  4096 Oct 12  2022 app
drwxr-xr-x  2 ex-admin ex-admin  4096 Oct 26  2023 data
drwxr-xr-x. 2 ex-admin ex-admin  4096 May 17 15:03 log
drwxr-xr-x. 2 ex-admin ex-admin  4096 May 28 11:03 tmp

特定のディレクトリを除外するには、rsyncコマンドの–excludeオプションを使用します。このオプションに除外したいディレクトリやファイルを指定します。複数のディレクトリやファイルを除外する場合は、–excludeオプションを複数回使用します。

以下に、実際のコマンド例を示します。

$ rsync -avz --exclude='/home/admin/log' --exclude='/home/admin/tmp' admin@web01:/home/admin/ /var/tmp/admin/

このコマンドは、adminユーザーの/home/admin/ディレクトリを/var/tmp/admin/にコピーしますが、「/home/admin/log」と「/home/admin/tmp」ディレクトリは除外されます。

  • -a:アーカイブモード。ファイルの属性を保持します。
  • -v:詳細モード。コピーの進行状況を表示します。
  • -z:圧縮を有効にします。転送速度を向上させます。
  • --exclude:指定したディレクトリやファイルを除外します。

このようにして、rsyncコマンドを使用することで、特定のディレクトリやファイルを除外しながデータをコピーできます。