Provided by:
manpages-ja_0.5.0.0.20080615-1_all 
FTPト
ftp 転送が、 Midnight Commander の仮想ファイルシステム (Virtual File
System: VFS) を利用する形でサポートされている。 要するにつまり、URL
もローカルディレクトリと同じようにサポートされている。
以下に例を示そう。
mirrordir --verbose \
ftp://lava.obsidian.co.za/pub/mirrordir \
/home/mirrordir
あるいは
mirrordir --verbose /home/mirrordir \
ftp://psheer@lava.obsidian.co.za/home/ftp/pub/mirrordir
も動作する。ただし後者ではまずパスワードを尋ねられる。 ftp
サーバに「アップロード」を行う場合は、 --strict-mtimes オプションは on
にすべい任覆ぁ ftp では修正時刻の設定はでい覆い里如
すべてがコピーされてしまう。
(--verbose を設定すれば) mirrordir が繰り返し ftp
で修正時刻とアクセス時刻をセットしようとしていることに気づくだろう。
用いている VFS のタイプにおける制限をユーザに知らせるために、
これらのメッセージは残しておくつもりである。 これらの試行は、明らかな-
能の劣化としては現われない。
しかしこのプロトコルを用いたアップロードの税修阿ぞ豺腓蓮代わりに
mc:// を用いてみるといいだろう。
なおダウンロードは常にアップロードよりも高速である。
一般に cron ジョブでは ftp アップロードを用いるべい任呂覆ぁ
またディレクトリの同期を取る目的にも向いていない。
ディレクトリを同期したい場合は、反対側からのダウンロードを用いること。
アップロードは一回い蠅離▲奪廛蹇璽匹砲靴様僂任覆ぁ
例
ここでは mirrordir を用いて行える、ちょっと気の効いた作業を紹介する。
ー
ソースツリーが 2 つあり、
古い版をパッチを適用するために保管しておい燭い箸垢襦 これには
mkdir tree.OLD して、
mirrordir -v tree tree.OLD
するだけでよい。 もう一度 mirrordir
を実行すれば、最小限の変更のみ (つまり更新されたファイルのみ)
がコピーされる (実は cp(1) も同じことをする)。
プ
システムによっては、
定期的なバックアップをテープアーカイブに行っていることがある。
また RAID デバイスを用いて、
あるパーティションと同一のコピーを恒常的に保持しているシステムもあるだろう。
mirrordir はさらに別の選択肢を提供する。 システムに 2
台のドライブを装備する。ひとつは普段用いるもの、
もう一つはバックアップするためのものである。 そして mirrordir を
cron(8) のテーブルに追加するのだ。
変更されたファイルのバックアップには、様々なオプションが利用で-
る。 バックアップディレクトリはユーザから読み取り可能にしておぁ
各人のバックアップファイルを閲覧で-
るようにしておくといいだろう。
特定のファイルの古いバージョンを取り戻したいユーザは、
バックアップから入手でい襪茲Δ砲覆襦 mirrordir
は変更されたファイルの最小限だけを処理するので、非常に高速である。
一日に何回も実行したり、あるいは --nice オプションを付けて
途切れることなく実行させることさえ可能である。
マシンが壊れたとい紡个垢詒えをさらに強固にしたければ、 FTP
を用いてリモートマシンにバックアップを行うこともでい襦
2る
dar2 というマシン上で、私は次のような cron ジョブを 6
時間ごとに実行している。
#!/bin/sh
# (this is just in case of any bugs I don't know about,
# but I don't think it is necessary)
killall -9 tee
killall mirrordir >& /dev/null
sleep 2
killall -9 mirrordir >& /dev/null
( \
date ; \
echo "mirrordir says (if it said nothing it is bad):" ; \
mirrordir mc://dar1:12346/ -p abcdefg /mnt/dar1/ \
-i --exclude-regexp '^mc://dar1:12346/var/lock/subsys/atd' \
--exclude-regexp '^mc://dar1:12346/proc/' \
--exclude-regexp '^mc://dar1:12346/mnt/[^/]*/.*$' \
-i --exclude-regexp '^mc://dar1:12346/boot/' \
-i --exclude-regexp '^mc://dar1:12346/etc/lilo.conf' \
-C \
'
if (S_ISDIR (stat.st_mode)) {
if (!regexp ("^mc://dar1:12346/[^/]*$", PATH))
printf ("Backing up: %s0, PATH);
}
' ; \
date ; \
echo "Done" ; \
) 2>&1 \
| tee --ignore-interrupts --append /var/log/mirrordir.log \
| mail -s 'dar1 backup results' psheer@obsidian.co.za
ン
turing.co.uk において以下のコマンドを実行しておく
secure-mcserv -p 12345 -d
どこか外部のマシンから
copydir --secure -K 512 -z \
mc://alan@turing.co.uk:12345/usr/src/linux/.config .
とすれば、512 ビットの鍵を用いた安全なファイルコピー (圧縮つ)
がでい襦 また
pslogin mc://alan@turing.co.uk:12345/
とすれば、このマシンに安全にログインでい襦
FTPー
ftp サイトでは ls の -R
オプションが禁止されていることが多いので、 従来用いられてい
mirror (1) は失敗することがあった。 mirrordir
にはこの制限はない。
mirrordir -v ftp://metalab.unc.edu/pub /home/ftp/pub
FTP送
よくある FTP 転送は、--copy-mode オプションを用いた
一行のコマンドで簡単に実現でい襦 複数のファイルをどちら向-
にも、 また別々の ftp サイトにすら (間接的にではあるが)、 cp(1)
のようにコピーでい襦
copydir -v mirrordir-0.9.15.tar.gz \
mirrordir.lsm ftp://metalab.unc.edu/incoming/Linux
とすると mirrordir を sunsite にアップロードする。
anonymous でない ftp 転送のパスワードは、標準的な ftp
の慣習に従って ~/.netrc ファイルに置ぁ--netrc
オプションを用いるのがよい。 あるいは ftp://myname@machine/
を用いてもかまわない。
索
recursdir / -C
'if (!glob ("*.c", FILE)) printf ("%s\n", PATH);'
とするとシステムにあるすべての C ファイルを表示する。
recursdir / -C
'if (S_ISCHR(stat.st_mode)) printf ("%s\n", PATH);'
とすればシステムにあるすべてのゥ礇薀タデバイスを表示する。
FTPる
リモートサイトをテープにバックアップするには
recursdir ftp://user@remote.machine/ \
--exclude-regexp '//[^/]*/proc/' --tar-file /dev/mt
とすればよい。
core除
これはシステムからすべての core ファイルを削除する:
recursdir / -C '
long l;
if (strncmp (PATH, "/proc", 5)) {
if (S_ISREG (stat.st_mode) && !strcmp ("core", FILE)) {
if (strstr (popen ("file " + PATH), "ELF 32-bit LSB core")) {
l = l + stat.st_size;
printf ("removing: %s, cumu. total = %ldkB\n", PATH, l >> 10);
exec ("rm", "-f", PATH); /* could also use system() */
}
}
}
'
数
TMPDIR 一時的なファイルを保管させたいディレクトリ。 ftp
ファイルシステムは、
まずファイルをこの一時ディレクトリにダウンロードし、
正しい場所にそのファイルをコピーする。後述の を参照のこと。
TMPDIR が指定されないと、
デフォルトでは現在進行中のファイルがあるディレクトリに保存される。
値
mirrordir は以下の値を返す:
0 成功。
1 何らかのエラー (書すみエラー、許可属瀬┘蕁爾覆) が起った。
この場合、エラーの詳細は stderr に書すまれているはずである。
2 あるファイルが利用中でコピーでい覆ったが、それ以外は成功した。
この場合は `unable to open control file for writing'
というエラーが書すまれているはずである。
標準エラーでこのメッセージを grep
し、これらのファイルに対してのみ もう一度 mirrordir
を実行すればよい。 grep(1) を参照のこと。
グ
atd デーモンのあるバージョンでは、 ロックファイル (や pid ファイル?)
をそのファイルもロック付い悩鄒するため、 secure-mcserv
が永遠にブロックする。 これを防ぐには、 atd
を停止させるか、このファイルを対象から除外しなければならない。
サマータイムの時間補正があるところと ftp でミラーを行うと、 1
時間の時間のオフセットが生じるように見える。 とりあえずの回避策としては
--time-offset を用いてほしい。 これが mirrordir
のせいなのかどうかは私にはわからない。
mirrordir のせいで CPU
が食い尽くされ、停止してしまうように見えるバグは修正された。
コマンドラインから多数の --exclude 式を指定すると、
処理が遅くなる。たくさんのファイルのリストを除外対象したい人は、
そのリストをテゥ好肇侫.ぅ襪暴颪い董 --exclude-from
オプションを利用する方がよい。
シンボリックリンク (それが指すファイルではない)
の修正時刻とアクセス時刻は複製されない。
以前にあった、ハードリンクファイルが通常ファイルとして扱われてしまうという
制限は解決された。--no-hard-links オプションを指定すれば、 0.9.8
以前の動作をエミュレート可能である。
ハードリンクがデバイスをまたいで作成されているかどうかはチェックしていない。
この場合はそれに見合ったエラーが報告されることになろう。
ftp ファイルシステムは、まずファイルを一時ディレクトリに *ftpfs*
という名前でダウンロードする。 これはスペースの無駄だが、vfs
ライブラリのデフォルトの動作なのだ。
このディレクトリに十分な容量がないと、おそらく mirrordir はハングする。
上述の を参照のこと。
ファイル除外に用いる C スクリプト言語は、 実装のやりすぎである。
ル
~/.netrc
マシンとそのパスワードのリスト。 オプション --netrc
を参照のこと。
/etc/ssocket/accept.cs
このスクリプトは、接続のサーバ側で、鍵交換と署名生成を行う。
/etc/ssocket/connect.cs
このスクリプトは、接続のクライアント側で、鍵交換と署名生成を行う。
/etc/ssocket/arcinit.cs
ストリーム cipher 暗号化を初期化する (国際版では存在しない)。
/etc/ssocket/arcencrypt.cs
ストリーム cipher 暗号化を行う (国際版では存在しない)。
/etc/ssocket/private/
このディレクトリには、ホストの秘密鍵が置かれる。
鍵はそれぞれ別々のファイルに保存される。 ファイル名は 512, 1024
などである。 鍵のデータベースを使うようにすると、
鍵管理用のユーティリティが必要になるので、 こちらのほうがよい。
すぐに Reiser ファイルシステムが標準的になるだろうから、
データベースファイルはいずれにしても不要になるだろう。
/etc/ssocket/public/
こちらは公開鍵のもの。後は /etc/ssocket/private/ と同様。
拠
mirrordir は作成者の発明であり、 いかなる OS の標準にも従っていない
(そうするべい任呂△襪!)
法
このプログラムの最新版は、
ftp://metalab.unc.edu/pub/Linux/system/backup または
ftp://lava.obsidian.co.za/pub/linux/mirrordir から入手でい襦
者
Paul Sheer <psheer@obsidian.co.za> <psheer@icon.co.za>
目
mirror(1), pavuk(1), cp(1), scp(1), find(1), mc(1), ftp(1), ssh(1),
tar(1), rlogin(1), rlogind(8), forward(1)