rsyncのコマンドで同一ネットワークにあるマシンのファイルを転送したいのですが

どのようなコマンドにすればいいのでしょうか?
結論は、マシンAの/sbinのフォルダをマシンBに持ってきたい。
マシンA:
IP:192.168.1.201
対象ディレクトリ:/sbin

マシンB:
IP:192.168.1.202
対象ディレクトリ:/

該当のマシンAのディレクトリの権限などをそのまま
マシンBのrootディレクトリにsbinとして持ってきたいんです。

もちろんSSHのポートは開いてますが、公開鍵でしかログインは出来ません。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2007/10/20 14:20:28
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答6件)

id:wdc No.1

回答回数11ベストアンサー獲得回数0

ポイント19pt

Bがローカルマシンだとしますと、Bの/に移動して

rsync -auvz --numeric-ids --delete 192.168.1.201:/sbin ./

でいいかと思います。

そうでないなら

rsync -auvz --numeric-ids --delete 192.168.1.201:/sbin 192.168.1.202:/

かな。これはやったこと無いですが(^^ゞ

バックアップ元ディレクトリ最後に / をつけない場合、

バックアップ先にディレクトリを作った上でバックアップします。

ウェブのドキュメントではここがわかりやすいです。

http://www.infoscience.co.jp/technical/rsync/index.html

・マニュアル(オプションはここで確認してください)

 http://www.infoscience.co.jp/technical/rsync/rsync.html

・使用例

 http://www.infoscience.co.jp/technical/rsync/examples.html

id:hopefully

マシンBでやったら以下のメッセージが出ました。

Permission denied (publickey,gssapi-with-mic).

rsync: connection unexpectedly closed (0 bytes received so far) [receiver]

rsync error: error in rsync protocol data stream (code 12) at io.c(463) [receiver=2.6.8]

2007/10/18 13:02:19
id:paraizo No.2

回答回数139ベストアンサー獲得回数10

ポイント19pt

rsync -azvv -e "ssh -p 22 -i keyfile" root@192.168.1.201:/sbin /

id:hopefully

"ssh -p 22 -i keyfile"は自分で作成するんですか??

2007/10/19 09:52:13
id:bayan No.3

回答回数100ベストアンサー獲得回数13

ポイント18pt

自分だったらどうするかということで。。。

マシンBから (192.168.1.202) でやるとしたら

次のようにしますかね。

rsync -e ssh -avc hoge@192.168.1.201:/sbin /

ここで hoge はマシンAにログインできるユーザー名です。

それと、

rsync -n -e ssh -avc hoge@192.168.1.201:/sbin /

みたいに -n をつけて事前に何が起きるか確認した方がいいかもしれんです。

  • delete は 転送元にないファイルが転送先にあったら、

削除するオプションだったと思いますが、私は怖いので

使ったことないです。

id:hopefully

ありがとうございますw

2007/10/20 14:20:08
id:Pooh_san No.4

回答回数7ベストアンサー獲得回数1

ポイント18pt

こんにちは。

リモートコマンドを使うときはrhostなどにアクセス権の設定が必要のはずです。

http://hp.vector.co.jp/authors/VA002739/ntcom/com_tcpip/rsh.htm

はずれていたらごめんなさい。

id:hopefully

ありがとうございますw

2007/10/20 14:20:12
id:wdc No.5

回答回数11ベストアンサー獲得回数0

ポイント18pt

あの、もしかして /sbin を / にコピーするっていうのは例え話ではなくて、

本当にそうしたいんでしょうか?

だとすると、それはちょっとまずいように思います。

/sbin はシステムで利用する重要コマンド群ですから、他のマシンからコピーする状況というのは通常無いように思います。


なお、Permission denied はまさしく権限無しということです。

一般ユーザーは / に直接書き込みはできません。

通常リモートバックアップは、自分のディレクトリ以下に例えば ~/backup などのディレクトリを作っておいて、そこに必要なファイルをコピーしておくような感じで使うことが多いと思います。


あと、rsyncのオプション-eですが、現在はデフォルトでsshを利用しますので不要じゃないでしょうか(僕はFreeBSDですが他の環境では違うのかな)。

rhostへの登録も不要です。


ルートアカウントで作業するとするとparaizoさんの通りroot@が必要ですが、

sshのデフォルト設定ではrootのログインはできないはずですので、/etc/ssh/sshd_configの見直しが必要です。

id:hopefully

そうなんですよ。

/sbin を消されてしまったので

戻したいんです。

もう1個同じマシンなので問題は

ないと思いますがどうでしょうか?

2007/10/19 17:42:00
id:wdc No.6

回答回数11ベストアンサー獲得回数0

ポイント18pt

あ、あの…

「消された」って、誰にですか?

クラックされたってことでしょうか?

ネットワーク内にルート権限をもっている素人がいらっしゃるのでしょうか?


上の場合、全て無かったことにしてOSを再インストールしてください。

下の場合、Aマシンの /etc/ssh/sshd_config にて PermitRootLogin(だったかな)を yes にしてsshdを再起動した後に

Bマシンでルートになってから

rsync -auvz --numeric-ids 192.168.1.201:/sbin /

でどうでしょうか?

1回限りのコピーですから --delete オプションは不要です。


私自身 /sbin を上書きした経験がありませんので、

これ以上は提言に自信はありません。


私がやるとすると、sshでAマシンにログインしてからルートになって /sbin 以下を tar でまとめて、

自分のディレクトリ下に一旦保存します(~/tmp/sbin.tar などにして)。

そいつを scp でBマシンの自分のディレクトリ下にコピーしておきます。

後はBマシンにログインしてからルートになって、sbin.tar を / に展開します。

こうすると /sbin 以下のコマンド郡は確実にBマシンに存在しているので、

少しづつ様子を見るとかできますし、手順を間違った時もローカルマシンの作業で済むので、気が楽です。

id:hopefully

ありがとうございますw

素人ではないのですが、消されましたね。

root権限は渡していました・・・

2007/10/20 13:02:59

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません