- blogs:
- cles::blog
2012/09/19

rsync とスラッシュの有無
rsync の使い方としては SRC と DST を同期させる際に下記のようにすると思いますが、SRCの末尾に/があるときとないときで挙動が違います。
rsync -avz SRC DST
具体的には「/path/to/src」と「/path/to/src/」のような場合です。あまりにも何度もハマるのでメモを残すことにしました。
ハマる人が多いのか、解説をしているサイトは一杯あるんだけどどうもわかりにくいんですよね。
rsyncを使った熟練者レベルのバックアップ - SourceForge.JP Magazine : オープンソースの話題満載
たとえば、ホームディレクトリの下にあるファイルをUSBストレージデバイスにコピーしたければ、「rsync -a /home/user/dir/ /media/disk/dir/」とすればよい。ちなみに、rsyncは“/home/usr/dir/”と“/home/usr/dir”を区別する。最後のスラッシュがない場合、rsyncはそのディレクトリも含めて全体をコピーする。スラッシュがある場合、ディレクトリの中身をコピーするが、ディレクトリそのものは作られない。たとえば、/var/wwwを別のマシンか何かにミラーリングするなど、rsyncを使ってディレクトリ構造を複製しようとする場合は、最後のスラッシュを除く必要があるわけだ。
rsyncを使う多くの場合はSRCとDSTの中身を同一にしたい時でしょうから、SRC にはスラッシュつける必要があると覚えておくと良さそうです。もうちょっとうまい暗記方法がないものかなと思って検索して見たら、目から鱗な解説をしているエントリを見つけたのでこちらもメモ。これはいいですね。
地雷だらけのrsyncを理解する。 - こせきの技術日記
SRCスラッシュの有無は、mv SRC DEST と mv SRC/* DEST の違いと一緒。スラッシュの後ろに*が省略されているものと考える。
以下、動作のサンプル。
† コピー前
例えばこんな感じのディレクトリがあった場合に、SRCにスラッシュがある場合とない場合でDSTに作られるディレクトリの構成が変わります。
/path/to/src/foo.txt
/path/to/src/bar.txt
/path/to/src/baz.txt
/path/to/dst
† sync後(スラッシュなし)
rsync -avz /path/to/src /path/to/dst
/path/to/src/foo.txt
/path/to/src/bar.txt
/path/to/src/baz.txt
/path/to/dst/src/foo.txt
/path/to/dst/src/bar.txt
/path/to/dst/src/baz.txt
† sync後(スラッシュあり)
rsync -avz /path/to/src/ /path/to/dst
/path/to/src/foo.txt
/path/to/src/bar.txt
/path/to/src/baz.txt
/path/to/dst/foo.txt
/path/to/dst/bar.txt
/path/to/dst/baz.txt
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/5235
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . Windows 10 で勝手にログアウトされないようにする(1268)
2 . リモートデスクトップで Alt + PrtSc と同じことをするには(1168)
3 . RDP のプロトコルを TCP だけに変更する(984)
4 . Flash Player projector を使って .swf をスタンドアローンで再生する(931)
5 . リモートデスクトップで Ctrl + Alt + Del キーを送信するには(844)
2 . リモートデスクトップで Alt + PrtSc と同じことをするには(1168)
3 . RDP のプロトコルを TCP だけに変更する(984)
4 . Flash Player projector を使って .swf をスタンドアローンで再生する(931)
5 . リモートデスクトップで Ctrl + Alt + Del キーを送信するには(844)
cles::blogについて
Referrers