teematsu @ ウィキ
Cygwin
最終更新:
teematsu
cygwinインストール
パッケージの追加
上の本家からsetup.exeをダウンロード。実行。 参考。
- http://desaian.bov.jp/programming/cygwin/cygwin_soft_add.html
- http://homepage2.nifty.com/kerota/CYG_2.htm
rsync
転送対象を別ファイルで指定
rsync -r --include-from=filelist /foo /bar
filelistファイルの記述方法は man rsync の FILTER RULES の節に説明がある。
- 1行1ルール
- 最初にマッチした行が有効
- どれにもマッチしなければ転送対象になる。
- #で始まるのはコメント
-
マッチしたら転送対象
+ パターン
-
マッチしたら除外
- パターン
パターン
-
/abc
/foo/abc にマッチ (/fooは、rsyncのコマンドラインにSRCとして指定したパス) -
abc
/foo/abcや/foo/xyz/abcにマッチ(最後がマッチすればマッチ) -
/abc/
/foo/abc というディレクトリにマッチ (/foo/abcが通常のファイルならマッチしない) -
/abc/*
/foo/abc/xyzや/foo/abc/123 にマッチ。ただし、/foo/abc/xyz/pqrにはマッチしない (/abcの直下にマッチ) -
/abc/**
/foo/abc/xyzや/foo/abc/xyz/pqrにマッチ(/abc配下にマッチ) -
/abc/***
/abc/ および /abc/** の両方を指定したのと同じ
再帰的に転送することを指定している場合(-r もしくは -aを指定している)、 /foo/a/b 配下が転送されるようにするには、/foo/aが除外されるような設定になっていてはならない。 以下の指定では、/foo/aが除外されてしまうため、/foo/a/b配下は転送されない。
+ /a/b/*** - *
差分転送に対する制御
デフォルトでは、タイムスタンプとファイルサイズの両方が一致すれば、ファイルに変更なしとみなす。 ファイルに変更がなければ転送しない。
差分転送を制御するオプションとして以下がある。それらの詳細な動作・関係がよくわからない。
- --ignore-times ファイルの変更チェックにタイムスタンプとファイルサイズを使わない⇒すべてのファイルを転送
- --whole-files ファイル一致確認をせずにすべて転送、と読めるが、実際にはこのオプションによらず差分転送になっている気がする。
- -c/--checksum
- --size-only
rsyncでバックアップ
日本語ファイル名の文字化け、および、転送漏れ(file has vanished)を防ぐため、以下のUTF-8 Cygwinのモジュールを組み込む。
http://www.okisoft.co.jp/esc/cygwin-20.html
#!/usr/bin/bash # -a archive mode # -v verbose # -z compress # --delete delte a remote file, if the local file is removed dest=user@host:path/to/dest rsyncopt='-avz --delete' cd /cygdrive/d/work rsync $rsyncopt src $dest
「--link-dest」を使うとディスクを節約できる
http://www.itmedia.co.jp/enterprise/articles/0804/25/news034.html#
SSH ポートフォーワーディング
ssh -L 12345:foo.example.com:80 bar@foo.example.com
ローカルの12345をfoo.example.comの80に転送
foo.example.comにログインするときのユーザーはbar
上記指定ではローカルの127.0.0.1以外のインタフェースからはフォーワーディングしてくれない場合がある。この場合は、
ssh -L mypc.example.com:12345:foo.example.com:80 bar@foo.example.com
のように、フォーワード元のインタフェースアドレスを明記する。