scpとrsync

5015 ワード

scp – secure copy (remote file copy program)
scp=cp+sshで、sshプロトコルによりリモートホストとファイルをコピーします.
  • 使用方法scpオプションfile_source file_targetリモートパスの場合、user@remote_ip:fileの形式(もちろんリモートホストでssh keyを使用している場合は省略可能)例えば:scp /home/wgjak47/A.md [email protected]:/tmp/B.md
  • オプションscpに関するレプリケーションオプションはcpよりも少なく、元の属性を再帰的にレプリケーションして保持するしかありません.例えば、ディレクトリをレプリケーションし、ソースファイルの権限、時間などの情報を保持したい場合は、-rと-pオプション:scp -rp /home/wgjak47/secret [email protected]:/home/test/backupscpを使用します.また、sshと同じオプションも一部使用できます.例えばリモートホストのsshポートを指定できる:scp -rp -P 3307 /home/wgjak47/secret [email protected]:/home/test/backup
  • 速度については、暗号化が使用されているため、tftpなどの簡易ファイル転送プロトコルよりも遅いが、深刻ではない.

  • rsync
    remote synchronize、すなわちリモート同期.rsyncは主にミラーリングに用いられ,ファイルを同期する際に元のファイルの権限,時間,ソフト・ハード・リンクなどの付加情報を保持することができる.
    rsyncサービス側
  • rsyncを最初に取り付ける:sudo apt-get install rsync
  • 2.rsyncのサービス側でrsyncサービスを構成する必要があります.以下の3つのファイルに関連します.
  • rsyncd.conf(プライマリプロファイル)のデフォルトは/etcです./usr/share/doc/rsync/example/から/etcの下にサンプルファイルをコピーしてください.cp /usr/share/doc/rsync/example/rsyncd.conf /etc/

  • # sample rsyncd.conf configuration file
    # GLOBAL OPTIONS
    #motd file=/etc/motd #log file=/var/log/rsyncd # for pid file, do not use/var/run/rsync.pid if# you are going to run rsync out of the init.d script. # The init.d script does its own pid file handling, # so omit the “pid file” line completely in that case. # pid file=/var/run/rsyncd.pid #syslog facility=daemon #socket options=
    # MODULE OPTIONS
    [ftp]#認証のモジュール名、クライアント使用時指定
    Comment=public archive path=/var/www/pub#同期が必要なディレクトリuse chroot=yes#同期前にchrootを同期ディレクトリに、安全に考慮します.max connections=10 lock file=/var/lock/rsyncd#the default for read only is yes...read only=yes list=yes uid=nobody#転送ファイルで使用されるユーザーgid=nogroup#転送ファイルで使用されるグループを確認し、path下のファイルを読み取ることができるユーザーとユーザーグループを確認してください.exclude=#exclude from=#include=#include from=#auth users=#認証のユーザー名.この行がない場合は匿名#secrets file=/etc/rsyncdであることを示す.secrets##認証パスワードファイルstrict modes=yes#hosts allow=#アクセス可能なhosts#hosts deny=#進数アクセスのhostsは、前の2つの選択1 ignore errors=no#ignore nonreadable=yes transfer logging=no#レコード転送ログ#log format=%t:host%h(%a)%o%f(%l bytes).Total %b bytes. timeout=600#タイムアウトrefuse options=checksum dry-run dont compress=.gz .tgz .zip .z .rpm .deb .iso .bz2 *.tbz#転送時に圧縮しないで時間を節約します.
    詳細はman page:man rsyncd.conf
  • rsyncd.secrets(パスワードファイル)パスワードファイルは自分で指定できます.デフォルトは/etc/rsyncdです.secrets.ユーザ名形式:パスワード例:
  • wgjak47:thisispwd
    ファイル権限は600に設定し、パスワードの漏洩を防止します.
  • rsyncd.motd(rysncサーバ情報)rysncサーバ情報、すなわちユーザログイン情報を定義する.例えば、このサーバが誰が提供したのかをユーザーに知らせるなど.例:
     ++++++++++++++++++++++++++++++++++++++++++++++    Welcome to use my rsync services!   ++++++++++++++++++++++++++++++++++++++++++++++
  • rsyncサービスの有効化(Debian):
  • 編集/etc/defalult/rsync、RSYNC_を修正ENABLE=true
  • ファイアウォールポートを開く:iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
  • rsyncサービスの有効化(update-rc.d、起動自動起動)update-rc.d rsync start 20 2 3 4 5
  • rsyncサービス開始service rsync start
  • クライアント
    クライアントはrsyncコマンドを使用してサーバからファイルを同期できます.rsyncのコマンドフォーマットは、次のとおりです.
  • rsync[OPTION]…SRC[SRC]……[USER@]HOST:DEST:ローカルマシンのコンテンツをリモートマシンにコピーするためにリモートシェルプログラム(rsh、sshなど)を使用します.DSTパスアドレスに単一のコロンが含まれている場合、このモードを起動します.
  • rsync[OPTION]…[USER@]HOST:SRC DEST:rsh、sshなどのリモートshellプログラムを使用してリモートマシンのコンテンツをローカルマシンにコピーします.SRCアドレスパスに単一のコロンが含まれている場合:「区切り記号」でこのモードを起動します.
  • rsync[OPTION]…SRC[SRC]…DESTコピーローカルファイル;SRCとDESパス情報の両方に1つのコロンが含まれていない場合:「区切り文字の場合、この動作モードを起動します.
  • rsync[OPTION]…[USER@]HOST::SRC[DEST]リモートrsyncサーバからローカルマシンにファイルをコピーします.SRCパス情報に「区切り文字」が含まれている場合にこのモードを起動します.
  • rsync[OPTION]…SRC[SRC]…[USER@]HOST::DESTローカルマシンからリモートrsyncサーバにファイルをコピーする.DSTパス情報に「区切り文字」が含まれている場合、このモードを起動します.
  • rsync[OPTION]…rsync://USER@]HOST[:PORT]/SRC[DEST]列リモートマシンのファイルリスト.これはrsync伝送に似ているが,コマンドでローカルマシン情報を省略すればよい.

  • オプション:
    -rは再帰-lはリンクファイルであり、リンクファイルをコピーすることを意味する.-pはファイルの既存の権限を保持することを示す.-tファイルの元の時間を保持する;gファイルの元のユーザグループを保持する;oファイルの元の所有者を保持する.-Dはブロックデバイスファイルに相当する.-a,–archiveアーカイブモードは、ファイルを再帰的に転送し、-rlptgoD-z転送時に圧縮されるすべてのファイル属性を維持することを示す.-P転送進捗;-v転送時の進捗などの情報は、-Pと少し関係があるので、自分で試してみます.ドキュメントを参照できます.-e sshのパラメータは暗号化された接続を確立します.-u更新のみを行い、ローカルの新しいファイルが書き換えられるのを防止し、両者のマシンのクロックに注意すると同時に–progressとは詳細な進捗状況を表示することを指す–deleteとは、サーバ側がこのファイルを削除した場合、クライアントもそれに応じてファイルを削除し、真の一致を保つことを意味する–password-file=/password/path/fileでパスワードファイルを指定し、これにより、検証パスワードをインタラクティブに入力することなくスクリプトで使用できます.ここで、このパスワードファイルの権限属性は、所有者のみが読み取り可能に設定する必要があります.
    サンプル:
  • rsync --list-only [email protected]::利用可能モジュールのリスト
  • rsync --list-sonly [email protected]::ftpftp下のファイルを見る
  • rsync -avzP [email protected]::ftp tmprootユーザーでサーバにログインし、testデータをローカル現在ディレクトリtestに同期する.もちろんローカルのディレクトリは自分で定義できます.クライアントで現在操作されているディレクトリの下にtestというディレクトリがない場合、システムは自動的に作成します.testというディレクトリに存在する場合は、書き込み権限に注意してください.–deleteオプションを追加すると、同期中にリモートホストは削除されますが、ローカルに存在するファイルは削除されます.