GNU/Linux >> Linux の 問題 >  >> Linux

Ubuntu 18.04 で rsync を使用してバックアップを構成する方法

Rsync (リモート同期) は、同じサーバー上または Linux 上の異なるマシン間でファイルとフォルダーをコピーおよび同期するためのツールです。

この記事では、ファイルとフォルダーを同期し、サーバーの定期的なバックアップをスケジュールするために、Linux Ubuntu 18.04 に Rsync をインストール、構成、使用する方法を学びます。

インストール

rsync パッケージは、公式の Ubuntu リポジトリに既に存在します。インストールするには:

$ sudo apt install rsync

構文

$ rsync options /path/source/ /path/destination/

利用可能なオプションは次のとおりです:

  • -v:コピーされたファイルとフォルダーがシェルに表示されます

  • -r:フォルダーとその内容をコピーします

  • -h:コピーされたファイルのサイズをバイト単位で表示する代わりに、読みやすい形式で表示します (14.167.396 バイトではなく、14.17 Mb が表示されます)

  • -z:転送されたデータを圧縮します

  • -a:タイムスタンプ、権限、所有者など、ファイルの元の情報を表示します。

  • -u:コピー時

  • --delete:rsync は、ソース フォルダーに存在しない宛先フォルダーのファイルを削除します。

  • --除外:コピー時に特定のファイルまたはフォルダーが無視されます。

  • --progress:コピー プロセスの割合と残り時間を表示します。

  • --existing:宛先フォルダーに既に存在するファイルのみがコピーされます。

同じコンピュータ上の 2 つのフォルダを同期する

あるフォルダーから別のフォルダーへのコピーは、"rsync" コマンドの後にソース フォルダー (アイテムのコピー元) と宛先フォルダーを指定して行います。コピーするフォルダに 内のフォルダが含まれているという事実に関係なく、タグを「-r」タグに追加することをお勧めします:

 $ rsync -r path/source path/destination

「ソース」フォルダー全体が「宛先」フォルダーにコピーされます。

 $ rsync -r ~/source/ ~/destination

「ソース」フォルダーの内容が「宛先」フォルダーにコピーされます。

2 つのコマンドの違いに注意してください。ソース フォルダの後に「/」を書き込むと、システムはフォルダに含まれるファイルをコピーするように指示されます。

「/」を入力しないと、フォルダー全体が選択され、その結果、宛先フォルダーにソース フォルダーのコピーが作成されます。

単一形式のファイルのコピー

Rsync では、形式または名前を指定することで、特定の種類のファイルのみをコピーすることもできます。

ファイルが「txt」形式であると仮定すると、この形式のすべてのファイルは次のように入力してコピーできます:

$ rsync path/source_folder/*.txt path/destination_folder

「* .txt」で、「すべての .pdf ファイル」のコピーを明示的に要求したことになります。

2 台のマシン間で SSH プロトコルでファイルをコピーする

SSH プロトコルを使用して、ファイルやフォルダをコンピュータから別のコンピュータにコピーすることもできます。このプロトコルを使用すると、転送中にすべてのファイルが暗号化されるため、誰もそれらを読み取ることができなくなります。

コマンドには、オプション「-e ssh」の後にコピーのソースと宛先を指定する必要があります。

$ rsync -r ssh path/source/ [email protected]_machine:/path/destination/

ターゲット マシンにアクセスするユーザーのパスワードが必要になります。

サイズに基づくファイルのコピー

Rsync は、ファイルがディスク上で占めるサイズにも基づいて、コピーするファイルをフィルタリングします。

$ rsync --max-size=15k path/source_folder/*.* path/destination_folder/*.*

15Kb より小さいファイルのみがコピーされます。

大きなファイルは無視されます。

$ rsync --min-size=20k ~/source_folder/*.* ~/destination_folder/*.*

20Kb より大きいファイルのみがコピーされます。
より小さいファイルは無視されます。

拡張子に基づいてファイルをコピーから除外する

一部のファイル タイプをコピーしたくない場合は、「--exclude」タグを使用して、拡張子に基づいて一部のファイルをコピーから除外できます。

以下の例では、.PDF 形式のファイルは「ソース」フォルダーから「宛先」フォルダーにコピーされません。

$ rsync -r --exclude="*.pdf" path/source_folder/ path/destination_folder

転送後にソース フォルダからコンテンツを削除する

「カット アンド ペースト」の概念と同様に、rsync ファイルをソース フォルダーから宛先フォルダーに移動できます。この場合、ファイルは宛先フォルダーにコピーされ、ソース フォルダーから削除されます。

$ rsync -r --remove-source-files path/source_folder path/destination_folder

転送速度制限の設定

ネットワーク経由でコピーする場合、ファイルのアップロード速度制限を設定する必要がある場合があります。この場合、「--bwlimit =KBPS」タグを使用して、「KBPS」を目的の転送速度に置き換えます。

$ rsync --bwlimit=KBPS -r ssh source_path/folder [email protected]_receiver:/destination_path

「KBPS」を KB/秒で表される最大転送速度の値に置き換えます (2048 KB/秒 =2MB/秒)

定期的な自動コピーの作成

rsync を使用してバックアップを作成するが、毎回コマンドを入力したくない場合は、Cron という最適なツールがあります。

Ubuntu 18.04 には既に存在するこのサービスにより、一部のコマンドを定期的に繰り返すための「ルール」を設定できます。

ルールの作成を開始し、自動コピー プロセスの設定を開始するには、次のように入力します。

$ crontab -e

定期的に繰り返すコマンドを指定するテキスト エディターが開きます。ルールを設定したら、保存して閉じます。

crontab の設定方法

crontab の記述は、正確な構文に従って、6 つの順序付きパラメーターを指定する必要があります:

 m h dom mon dow command
  • m:分 (0-59)

  • h:時間 (0-23)

  • dom:月の日 (1-31)

  • mon:月 (1-12)

  • dow:曜日 (0:日曜日 - 6:土曜日)

  • command:実行するコマンド

    可能な構成の例:

     30 * * * * rsync path/source/*.pdf path/destination

    (毎月、毎日、毎時 30 分に、「ソース」フォルダー内のすべての「.pdf」ファイルが「宛先」フォルダーにコピーされます)

    */2 * * * * rsync パス/ソース/*.pdf パス/宛先 (「宛先」フォルダー内の「ソース」フォルダーに存在するすべての .pdf ファイル毎月 2 分ごとにコピーされます)

    50 8 * * 1,3 rsync パス/ソース/*.pdf パス/宛先 (「ソース」フォルダーの .pdf ファイルを「宛先」にコピーするコマンドフォルダは月曜日から水曜日の午前 8 時 50 分に実行されます)

    保存してエディターを閉じたら、crontab タイプのリストを表示します:

    $ crontab -l

    Linux
    1. 特定のフォルダ内の特定の拡張子を持つすべてのファイルを削除するにはどうすればよいですか?

    2. Rsyncを選択的に消音する方法は?

    3. SCP と Rsync を使用して Linux でファイルを転送する方法

    1. Ubuntu Phoneをバックアップする方法は?

    2. Ubuntu18.04でUFWを使用してファイアウォールを構成する方法

    3. ファイルを含むフォルダーを Unix/Linux の別のフォルダーにコピーするにはどうすればよいですか?

    1. SSH経由でRsyncを使用してファイルを転送する方法

    2. Rsyncでファイルとディレクトリを除外する方法

    3. rsync を使用してデフォルトでファイルを除外するにはどうすればよいですか?