こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

solaris上のディレクトリをwindows diskへrshでtarファイルとして保存したい

solaris上のディレクトリをwindowsからrshでtarを実行して直接windows上のフォルダにtarファイルとして保存したいのですが、コマンドが不明で困っております。

過去ログ(http://oshiete1.goo.ne.jp/kotaeru.php3?q=1139234)の#1さんの回答にあったコマンドがうまくいきません。

solaris8(Ultra-5)
 ホスト名 solAAA
 バックアップしたいディレクトリ /home/hogehoge
windows2000proSP4
 ホスト名 winBBB
 保存先 C\TEMP
 保存する際のtarファイル名 backup.tar
コマンドプロンプトでC\TEMPにcd後、実行したいと考えております。

ちなみに↓のコマンドは正常動作を確認しております。
 rsh solAAA -l root "ls -lap /"

どなたか↓のコマンドの誤っている個所と、解説をお願い致します。
 rsh solAAA -l root "tar cf - -C /home/hogehoge . > backup.tar"

rshはsolAAA上で実行されるので、winBBBの指定がどっかに必要のような。。。
根本的にこのようなことは不可能でしょうか。

投稿日時 - 2006-03-31 10:20:16

QNo.2062722

困ってます

質問者が選んだベストアンサー

> 修正したコマンドを実行したところ、
> C\TEMP に出来た backup.tar は fileB しか入っていませんでした。
> 原因解明可能でしょうか?
 恐らくWindowsのrshが勝手に改行コードを変換していると思われる。ざっと調べた感じでは回避策(改行コード変換を抑制)は無いようだ。なので、rshが変換した改行コードをもう一度戻してあげる必要がある。perlを使うならこんな感じ。

C:\>rsh solAAA -l root "tar cf - -C /home/hogehoge ." | perl -pe 's/\r\n/\n/g' > backup.tar

 ただ、これだと、おおもとの/home/hogehogeに\nのファイルと\r\nのファイルが混在していた場合に対応できない。が、まぁ解凍できなくなるよりかはマシという事でご勘弁。gzしてあげる方が良いかも知れない。

投稿日時 - 2006-04-03 13:51:45

お礼

根本的な回避策はないということですね。追加調査ありがとうございました。

投稿日時 - 2006-04-03 16:15:44

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

Windows付属のrshは、標準出力のLFをCRLFに書き換えてしまいますので、tarのようなバイナリを標準出力に出す使い方には向きません。
標準コマンドの範囲でやるなら、一度リモートホスト上にtarファイルを作って、それを rcp -b でバイナリコピーするという手しかないでしょう。

投稿日時 - 2006-04-03 13:54:41

お礼

改行コードが変換された結果、うまくtarできていなかったのですね。回答ありがとうございました。

投稿日時 - 2006-04-03 16:11:39

ANo.2

 誤っている箇所は「> backup.tar」が「""」の中にある事。つまり、リダイレクト(tarの成果物をファイルに落とすところ)までサーバ側で処理されている。

 なので次のように書き換える。

rsh solAAA -l root "tar cf - -C /home/hogehoge ." > backup.tar

ダブルクォートの位置が変わったのが分かるだろうか。

投稿日時 - 2006-03-31 13:45:51

補足

ちなみに、実行した際、エラー表示はなく1秒後くらいにプロンプトは戻ってきます。

投稿日時 - 2006-03-31 15:29:39

お礼

リダイレクト位置の修正、ありがとうございます。
修正後、実行してみたところ、別の問題が発生してしまいました。

/home/hogehoge ディレクトリの下には、4つファイルが存在しています。それぞれのパーミッションは 644 です。
fileA と fileB は所有者が userA 且つグループが users で、
fileC と fileD は所有者が root 且つグループが other です。

修正したコマンドを実行したところ、C\TEMP に出来た backup.tar は fileB しか入っていませんでした。
原因解明可能でしょうか?

-rw-r--r-- 1 userA users 153 Mar 31 13:56 list(←fileA・・・テキストファイル)
-rw-r--r-- 1 userA users 266 Mar 28 14:43 log.log(←fileB・・・テキストファイル)
-rw-r--r-- 1 root other 208547 Mar 28 14:12 ss_file.xwd(←fileC・・・CDE環境でSSを撮った画像ファイル)
-rw-r--r-- 1 root other 1039979 Mar 28 14:15 ss_file2.xwd(←fileD・・・CDE環境でSSを撮った画像ファイル)

SS・・・スクリーンショット?スナップショット?ハードコピー?

投稿日時 - 2006-03-31 15:27:39

ANo.1

backup.tar へのリダイレクトも solAAA が処理してる?

投稿日時 - 2006-03-31 12:42:39

お礼

そう言われてみればそうでした。ありがとうございました。リダイレクトの他に、別の問題が発生してしまいました。

投稿日時 - 2006-03-31 15:12:56

あなたにオススメの質問