BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

Linux rsyncコマンド、構文、および例[ガイド]

rsync r 同期をエモートします )コマンドは、ローカルストレージディスク間およびネットワーク経由でファイルを同期できるファイルコピーツールです。

とても良いので流行していますこれは通常、ファイルのバックアップ、ファイルサーバーを相互に最新の状態に保つため、およびWebアプリのコードとアセットをサーバーにデプロイするために使用されます。

rsync 表示できるほぼすべてのファイルをコピーでき、ファイルサイズと変更日に基づいて同期して、何が変更され、何を更新する必要があるかを確認できます。

rsync コマンドはBIGであり、このガイドで最も一般的な使用シナリオをカバーするいくつかの実用的なアプリケーションを開始します

構文

rsync OPTIONS SOURCE DESTINATION

注:

  • OPTIONSは、以下のリストのオプションのリストで、スペースで区切られています
  • SOURCEは、同期するファイルまたはフォルダーのソースへのパスであり、リモートホストの詳細を含めることができます
  • DESTINATIONは、ファイルまたはフォルダーを同期する宛先へのパスであり、リモートホストの詳細を含めることができます
  • ソースと宛先が正しい必要があります!

オプション

rsyncで一般的に使用されるオプションは次のとおりです。 、マニュアルから直接:

コピーするもの:

-r, --recursive             Recurse into directories
-R, --relative              Use relative path names
    --exclude=PATTERN       Exclude files matching PATTERN
    --exclude-from=FILE     Read exclude patterns from FILE
-I, --ignore-times          Don't exclude files that match length and time
    --size-only             Only use file size when determining if a file should be transferred
admin@wsxdn.com  --modify-window=NUM     Timestamp window (seconds) for file match (default=0)
    --include=PATTERN       Don't exclude files matching PATTERN
    --include-from=FILE     Read include patterns from FILE

コピー方法:

-n, --dry-run               Perform a trial run with no changes made
-l, --links                 Copy symlinks as symlinks
-L, --copy-links            Transform symlink into referent file/dir
    --copy-unsafe-links     Only "unsafe" symlinks are transformed
    --safe-links            Ignore links outside the destination tree
    --munge-links           Munge symlinks to make them safer
-H, --hard-links            Preserve hard links
    --devices               Preserve device files (super-user only)
    --specials              Preserve special files
-D, --devices --specials    Preserve devices (super-user only) +files
-g, --group                 Preserve group
-o, --owner                 Preserve owner (super-user only)
-p, --perms                 Preserve permissions
    --remove-source-files   Sender removes synchronized files (non-dir)
-t, --times                 Preserve times
-S, --sparse                Handle sparse files efficiently
-x, --one-file-system       Don't cross filesystem boundaries
-B, --block-size=SIZE       Force a fixed checksum block-size (default 700)
-e, --rsh=COMMAND           Specify rsh replacement
    --rsync-path=PATH       Specify path to rsync on the remote machine
    --numeric-ids           Don't map uid/gid values by user/group name
    --timeout=SECONDS       Set IO timeout in seconds
-W, --whole-file            Copy whole files, no incremental checks

宛先オプション:

-a, --archive               Archive mode equals -rlptgoD (no -H,-A,-X)
-b, --backup                Make backups (see --suffix & --backup-dir)
    --backup-dir=DIR        Make backups into this directory
-z, --compress              Compress file data during the transfer
-c, --checksum              Skip based on checksum, not mod-time & size
-C, --cvs-exclude           Auto ignore files in the same way CVS does
    --existing              Only update files that already exist
    --delete                Delete files that don't exist on the sending side
    --delete-excluded       Also delete excluded files on the receiving side
    --delete-after          Receiver deletes after transfer, not during
    --force                 Force deletion of directories even if not empty
    --ignore-errors         Delete even if there are IO errors
    --max-delete=NUM        Don't delete more than NUM files
    --log-file-format=FMT   Log file transfers using specified format
    --partial               Keep partially transferred files
    --progress              Show progress during transfer
-P                          Equivalent to --partial --progress
    --stats                 Give some file transfer stats
-T  --temp-dir=DIR          Create temporary files in directory DIR
    --compare-dest=DIR      Also compare destination files relative to DIR
-u, --update                Update only (don't overwrite newer files)

その他のオプション:

    --address=ADDRESS       Bind to the specified address
    --blocking-io           Use blocking IO for the remote shell
    --bwlimit=KBPS          Limit I/O bandwidth, KBytes per second
    --config=FILE           Specify alternate rsyncd.conf file (daemon)
    --daemon                Run as a rsync daemon
    --no-detach             Do not detach from the parent (daemon)
    --password-file=FILE    Get daemon-access password from FILE
    --port=PORT             Specify alternate rsyncd port number
-f, --read-batch=FILE       Read batch file
-F, --write-batch=FILE      Write batch file
    --version               Print version number
-v, --verbose               Increase verbosity
-q, --quiet                 Decrease verbosity
-4, --ipv4                  Prefer IPv4
-6, --ipv6                  Prefer IPv6
-h, --help                  Show this help screen

オプションの完全なリストについては、 rsyncを参照してください。 実行によるユーザーマニュアル:

man rsync

以下の各オプションの意味を繰り返すことはしません。オプションの意味がわからない場合は、必ず上のリストを参照してください。間違ったコマンドを実行してデータを失いたくない場合は、

ローカルからローカル(単一ファイル)

rsync を使用して、ローカルマシン上のあるディレクトリから別のディレクトリに単一のファイルを同期する方法は次のとおりです。 :

rsync -zvh /path/to/my-file.tar /path/to/destination/

ここからは、rsyncの最も一般的な使用シナリオであるため、すべての例でディレクトリの同期に焦点を当てます。

ローカルからローカル(ディレクトリ)

同じマシン上の1つのディレクトリから別のディレクトリにすべてのファイルを同期します:

rsync -avzh /path/to/source /path/to/destination

-avzhとは何ですか?統合された一連のオプションです。これは、-a -v -z -hと入力するより簡単な方法です。

ローカルからリモート(ディレクトリ)

ローカルのソースディレクトリからネットワーク経由でリモートコンピュータの宛先にすべてのファイルを同期します:

rsync -avz /path/to/source/ admin@wsxdn.com:/path/at/destination/

注:

  • ユーザー名 リモートシステムのユーザーです
  • / path / to / source / ローカルコンピュータのソースディレクトリへのパスです
  • 192.168.1.11 はリモートシステムのIPアドレスです–IPアドレスまたはホスト名を使用できます
  • / path / at / destination / リモートファイルシステム上のパスです
  • 同期はrsyncを使用して行われます デーモン

SSH(ディレクトリ)を使用したローカルからリモートへ

-e オプションを使用すると、 rsyncで使用されるプロトコルを指定できます SSHを使用してファイルを安全に転送することを指定できます:

rsync -avzh -e ssh /path/to/source/ admin@wsxdn.com:/path/at/destination/

リモートからローカル(ディレクトリ)

リモートコンピューターのソースディレクトリからローカルコンピューターの宛先にネ​​ットワーク経由ですべてのファイルを同期します。

rsync -avzh admin@wsxdn.com:/path/to/source /path/to/destination

注:

  • ユーザー名 リモートシステムのユーザーです
  • 192.168.1.11 はリモートシステムのIPアドレスです–IPアドレスまたはホスト名を使用できます
  • / path / to / source リモートファイルシステム上のパスです
  • / path / to / destination ローカルコンピュータの宛先です
  • 同期はrsyncを使用して行われます デーモン

SSH(ディレクトリ)を使用したローカルへのリモート

rsync -avzh -e ssh admin@wsxdn.com:/path/to/source /path/to/destination

ディレクトリで示したように、SSHを使用して、ローカルからリモート、リモートからローカルに単一のファイルを同期することもできます。

同期時に考慮すべきその他の事項

帯域幅を検討する

インターネット経由で同期している場合は、使用する帯域幅を制限して、ネットワーク上の他のサービスの速度を低下させないようにすることができます。

rsync -avz --bwlimit 512 /path/to/source/ admin@wsxdn.com:/path/at/destination/

削除を検討する

ファイルまたはフォルダーがソースで削除されたが、宛先に存在する場合は、ソースの正確なミラーになるように、宛先のファイルまたはフォルダーを削除することをお勧めします。このオプションを使用する前に、削除するものがあることを常に確認してください:

rsync -avz --delete /path/to/source/ admin@wsxdn.com:/path/at/destination/

ファイルの包含または除外

ファイルパターンを照合してファイルを含めたり除外したりします。同期したくないファイルがある場合は、除外できます:

rsync -avz -e ssh --exclude '*' --include 'keep*' /path/to/source/ admin@wsxdn.com:/path/at/destination/

このrsyncコマンドは、ファイルとディレクトリのみを同期します。これは「keep-」で始まり、他のすべてのファイルとディレクトリ(*)を除外します。

ドライランを検討する

ドライラン 変更されるファイルは印刷されますが、実際には印刷されません 何でも–ファイルが同期または変更されることはないため、さまざまなオプションを試して効果を確認できます。

rsync -avz --dry-run /path/to/source/ admin@wsxdn.com:/path/at/destination/

結論

システム上で多数のファイルを移動する場合は、Enterキーを押す前に入力を確認してください。間違った方向に同期して、重要なファイルを削除しないでください。

Linuxシェルコマンドに関する他の記事をチェックしてください!


  1. ファイルとディレクトリを一覧表示するLinuxのlsコマンド

    ls Linuxのコマンドは、おそらく最初に使用する必要のあるコマンドの1つです。この記事では、コマンドと一般的に使用されるパラメータについて説明します。 私が好むオプションのセットは次のとおりです。 ls -Zaltrh 各オプションを個別に掘り下げて、オプションのグロブ全体が役立つ理由を説明しましょう。 LinuxLSコマンド構文 #ls [OPTION] [FILE] OPTIONS: [-a], do not ignore entries starting with . or .. [-h], with -l, print sizes in human readable form

  2. コマンド プロンプトの基本:ファイルとフォルダの操作

    コマンド プロンプトの基本:ファイルとフォルダーの操作 エクスプローラーを使用してファイルをナビゲートするのにうんざりしていませんか?開発者または IT プロフェッショナルでない限り、それはあなたではないかもしれません。開発者であろうとなかろうと、基本的なコマンド ラインの知識があると常に役に立ちます。 このガイドでは、ターミナルで作業するときに使用できる一般的なファイル操作コマンドをいくつか紹介します。 コマンド プロンプト (または PowerShell または Windows ターミナル) からファイル システムを走査するには、次の 2 つの基本的なコマンドが必要です:cd と d