#author("2019-11-18T14:45:41+09:00","default:Miyashita","Miyashita") #author("2020-05-16T01:54:09+09:00","default:Miyashita","Miyashita") *rsync コマンド メモ [#od8f3e43] **基本形 [#h3e69539] cp と同じ. #codeprettify(lang-bash){{ rsync -(オプション) source destination }} ディレクトリ自体を含まない,ディレクトリ以下のファイル群をコピーするか,ディレクトリを含めてコピーするか, / の有無で変わるので使い方に注意. #codeprettify(lang-bash){{ rsync -rp source . # ディレクトリも含める rsync -rp source/ . # sourceディレクトリを含めずsource以下のファイルを同期する }} -よく使うオプション -a: いろいろなオプション適用,-rlptgoD と同じ -r: ディレクトリ以下全て --recursive -p: permissionを保持 --perms -l: シンボリックリンクをシンボリックリンクとしてコピー -v: ファイルの情報を表示 --verbose --include: 同期ファイルの指定(後述) --exclude: 同期対象から除外するファイルの指定(後述) リモートサーバーとの通信も可能. rsync の -l オプションを使うことで,シンボリックリンクをシンボリックリンクとしてコピーできる.使い方は scp と同じ. #codeprettify(lang-bash){{ rsync -rlp source miyashita@xxx.xxx.xxx.xxx:remote/destination/ }} ~ ~ **includeとexclude [#tc2bbdaa] 必要なものだけをコピーしたいという時に使える.include と exclude の順番が重要らしい. #codeprettify(lang-bash){{ rsync -av --include="*/" --include="*.jpg" --exclude="*" source destination rsync -av --include="*/" --include="*.png" --exclude="*.*" source destination }} このコマンドは,--include でディレクトリ("*/")と jpg ファイル (*.jpg) を指定して,他は --exclude で除外("*")している. このコマンドは,--include でディレクトリ("*/")と png ファイル (*.png) を指定して,他は --exclude で除外("*.*")している.~ ~ **差分のあるファイルだけ同期 [#xdf73a40] 同一ファイル名で中身も同一なものが多く含まれる場合には,--checksum オプションをつけて内容の異なるファイルだけ転送することできる.~ 転送元と転送先でそれぞれ checksum を計算しているらしい. #codeprettify(lang-bash){{ rsync --checksum -av source destination }}