« MySQL作業メモ | メイン | Windows起動不能時のメモ »

rsyncで特定ファイルを除外して転送する

rsyncを使って、ファイルを転送。ローカルからローカルでもOKだし、どっちかがリモートの場合は、同時にsshを使えばOK。

htmlや画像など、サイトのデータであれば、Dreamweaverで転送するのがよいのだが、ファイル数が膨大な場合や、バックアップ用途として使いたい場合は、やはりrsyncのほうが便利。
しかし、単純にrsyncを使うだけだと、困るときもある。例えば、手元のDreamWeaverから、LAN内のテスト用のホストAにファイルを転送する。
ホストAからは、rsyncを用いて、実機のホストBに転送するとする。

Dreamweaver(ローカル)→ホストA(テスト機)→ホストB(実機)

で、何が困るかというと、Dreamweaverでチェックイン/アウトの機能を使ってると、ホストA上に、チェックイン/アウトするファイルと同名で、****.LCKという、ロックファイルが生成される。チェックアウトすると消えるはず(あれ?チェックインだっけ??)

また、デザインノートを保持するにしている場合、各ディレクトリに、"_notes"というファイルができ、hogehoge.mnoというファイルができる。(DWのデザインノートファイル)

ホストAから、ホストBに対し、普通にrsyncでコピーすると、これらのファイルもまるごとコピーされてしまう。実害は無いが、不要なファイルは極力実機に置くべきではない(*.bakや、emacsで作成されるバックアップファイルとか)

また、ホストAがMac OS Xの場合、.DS_storeという、MacのFinder上でアイコンの位置などを記憶しているデータファイルも、一緒にコピーしてしまう。

不要なファイルがコピーされてしまうというのは、僕的には非常にキモチが悪い。
(※OS X 10.4以前のrsyncはファイルのリソースフォークをコピーしてくれないので、場合によってはファイルが壊れてしまう可能性あり。OS Xのファイルをrsyncする場合は、10.4以降をオススメする。。(あれ?10.3だったっけ?))

・・・まずは、オプションの説明など。
rsync (+ ssh) で簡単バックアップより

-v バックアップ時にバックアップしているファイル名を表示する
-r 指定したディレクトリ以下の各ディレクトリも再帰的にバックアップする
-l シンボリック・リンクをそのままにバックアップする(シンボリック・リンク先の内容をコピーせずにリンクのままコピー)
-H ハード・リンクをそのままにバックアップする
-p パーミッション属性を保存したままバックアップする
-o 所有者属性を保存したままバックアップ(root のみ可能)
-g グループ属性を保存したままバックアップ
-t タイムスタンプを保存したままバックアップ
-D デバイスファイルを保存したままバックアップ(root のみ可能)
-z データーを圧縮して転送する
-u 追加されたファイルだけバックアップする
--existing 更新されたファイルだけをバックアップし、追加されたファイルはバックアップしない
--delete バックアップ元で削除されたファイルはバックアップ先でも削除する
--exclude 'PATTERN' PATTERN で指定したパターンにマッチするファイルはバックアップしない
-a 上記のオプションのうち rlptgoD を指定する

まず、普通に転送。

rsync -auv /home/aaa /home/bbb

たとえば、
/home/aaa /home/bbb
の、aaaがファイルなのか、ディレクトリなのか、bbbが存在するか、ディレクトリなのかで、動作が変わるし、ディレクトリの場合は、"/"をつけるかつけないかで、動作は変わる。どう変わるかは、頭では分かってるけど、ここに書き出すのは面倒なので省略。

で、rsyncするときに、特定のファイルを除くことができる。exclude指定である。
DreamweaverのLCKファイルを転送したくない場合は、

rsync -auv --exclude="*.LCK" -e ssh public_html (実際は改行なし)
user@hostname:/home/site/public_html/

で、OK。"_notes"も転送したくない場合は、
rsync -auv --exclude="*.LCK" --exclude="_notes"(実際は改行なし)
-e ssh public_html user@hostname:/home/site/public_html/

と、excludeを単に複数記述すればOK。転送したくないものが多数ある場合、ファイルに記載しておいて、そのファイルを指定する--exclude-from=FILE というのもある。(ただ、ファイルフォーマットをどうすればいいのかマニュアルを見ても分からない(汗))

excludeは結構複雑な記述ができ、特定のルールがあるので細かいことはマニュアルとかGoogleでチェックされたし。

Dreamweaverから、リモートホストを簡単に切り替える機能があったら、いいのになぁ。。同期とかがややこしくなるのかな。

まぁ、そんな感じ。

トラックバック

このエントリーのトラックバックURL:
http://www.ironhearts.com/diary/mt-tb-ih.cgi/678

コメントを投稿

2008年12月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

最近のコメント

999 on 日々の記録: 4600Cを業務で使
uta on エラーコード -10660: はぁ〜なるほど。 あ
あんどりゅー on Firefoxでtableをdisplay:blockすると、幅がおかしくなる問題の対処: なるほど! 助かりま
小優 on 日々の記録: DELL4600Cで
よしぞう on 日々の記録: 4600C 表記の対
よしぞう on 日々の記録: 4600C 表記の対
on MySQL後で調べるメモ: DB接続後 目的のS
on 日々の記録: 「無くなった留め具」
on JavaScriptでクロスドメイン: >しかし、こういう小
junp on iMovieで静止画を取り込むと荒い: すいません困ってます

アーカイブ