- - PR -
tar.gz等で圧縮したファイルをローカルに保存せずに転送したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-09-03 08:48
表題の通り、圧縮したファイルをローカルに保存しないでそのまま転送したいのですが、可能でしょうか?
リダイレクトを駆使すればできる様な気もするのですが、どうもうまくいきません。 他の方でもやってそうだと思って調べてもみたのですが、見当たりませんでした。 実際やる作業は、tar.gzではなく、darと言う形式でバックアップ用に圧縮をかけて、それをローカルに保存せずに、ローカルLAN内、もしくは外部へ転送したいのです。 ローカルに一時的にでも保存してしまうと、当然バックアップしたいマシンに、最大でバックアップするデータ分の容量を確保しなくてはならないので、それだと不都合があるのです。 どうぞご教授よろしくお願いします。 | ||||
|
投稿日時: 2007-09-03 10:20
nfsやsambaでリモートディスクに書けばいいのでは。
リモートマシンのOSや可能な通信手段がわからないと、、、 | ||||
|
投稿日時: 2007-09-03 10:23
もう少し具体的な環境の情報が欲しいです。
(接続先とのプロトコルや、何を試してどうダメだったのか、等) 保存先のサーバをnfsマウントやsmbマウントすれば、 特に難しいことなくリダイレクトできると思いますが… 「datと言う形式でバックアップ用に圧縮をかけて」がよくわかりませんのでtarになりますが、 % tar czvf /foo/bar > /mnt/server/backup.tar.gz (バックアップ先サーバを/mnt/serverにマウント) でできると思います。 あとは、「標準入力」「転送」あたりで検索してみてはいかがでしょうか。 | ||||
|
投稿日時: 2007-09-03 12:48
すみません、darというコマンドがあるのですね。(「dat」と見間違えました) 使ったことがないのでうまくいくかわかりませんが、 「-c filename」でバックアップファイルを指定するみたいですので、 ファイル名に「-」を指定して出力を標準出力に切り替え、リダイレクトすればどうでしょうか? % dar -c - -g /foobar > /mnt/server/backup.dar ---- 引用部分の編集がおかしかったので修正 [ メッセージ編集済み 編集者: Ay 編集日時 2007-09-03 12:50 ] | ||||
|
投稿日時: 2007-09-03 22:24
progmanさん、Ayさんありがとうございました。
環境としてはサーバーはLinuxでクライアントはWindowsとLinux両方あり、Linuxはdarファイルを作ってローカルに保存せず転送、Windowsはzipやlzhで、通信手段はscpを予定しておりました。 当方、Linuxをまともにいじり始めてまだ半年ほどで、リダイレクトの意味をよく理解していない事を痛感しました・・・。 私は圧縮したファイルをscpで送信と言う形で考えていたのですが、ファイル名指定をどうやって良いのかわからず、リダイレクトでやってみたのですがうまくいかず、パイプでやってみたりしておりました。 また、smbマウントは全く考えていませんでした。 自分の使っているプログラムにもかかわらず、Ayさんのおっしゃる、ファイル名に「-」を指定すれば標準出力に切り替わる事も知りませんでした。自分の調べた限りのHPではそのオプションが書いてなく、英語マニュアルもほんの少し読める程度の英語力しかなく、理解できておりませんでした。大変失礼致しました。その様に行えばdarを使って直接転送できるのですね。 ちなみにもう一点質問お願いしたいのですが、scpだとssh通信路で暗号化かかるので、良いなと思っていたのですが、scpで転送する場合はどのようにしたら良いでしょうか? scp `dar -c BACKUP BACKUPFILE` hoge@hogehoge.com:/ の様に行い、転送先のパスワードは聞かれたのですが、下記のエラーがでて転送できません。ちょっとエラー長いのですみません・・・。 1: No such file or directory inode(s): No such file or directory saved: No such file or directory with: No such file or directory 0: No such file or directory hard: No such file or directory link(s): No such file or directory recorded: No such file or directory 0: No such file or directory inode(s): No such file or directory not: No such file or directory saved: No such file or directory (no: No such file or directory file: No such file or directory change): No such file or directory 0: No such file or directory inode(s): No such file or directory failed: No such file or directory to: No such file or directory save: No such file or directory (filesystem: No such file or directory error): No such file or directory 57: No such file or directory files(s): No such file or directory ignored: No such file or directory (excluded: No such file or directory by: No such file or directory filters): No such file or directory 0: No such file or directory files(s): No such file or directory recorded: No such file or directory as: No such file or directory deleted: No such file or directory from: No such file or directory reference: No such file or directory backup: not a regular file --------------------------------------------: No such file or directory Total: No such file or directory number: No such file or directory of: No such file or directory file: No such file or directory ssh: considered: Name or service not known 58: No such file or directory --------------------------------------------: No such file or directory EA: No such file or directory saved: No such file or directory for: No such file or directory 0: No such file or directory file(s): No such file or directory --------------------------------------------: No such file or directory ---- 利用環境が誤っていたので修正 [ メッセージ編集済み 編集者: ちゅえ 編集日時 2007-09-05 02:28 ] | ||||
|
投稿日時: 2007-09-04 00:23
こんばんは。
scp には標準入力からデータを読みこむ機能は無かったと思います。 scp を利用するのであれば、一度ファイルに書き出す必要があるハズです。 #単に私の技術不足かも。。。 マニュアル もしくは単に ssh を用いて、 [生転送の場合] > (cd /PathTo && tar cf - ./BackupDir) | ssh UserName@Example.jp "(cd /PathTo && tar xvfp -)" [tar.gz の場合] (cd /PathTo && tar cf - ./BackupDir | gzip -9 ) | ssh UserName@Example.jp "(cd /PathTo && cat > BackupFile.tar.gz)" dar の場合は、gzip の箇所を都合良く書き換えればいけるのではないでしょうか? また、シェルスクリプトを書く方向で、FTP を手段で用いれば、 put | ファイル生成処理 で FTP に標準入力で渡せたと思います。 もしくは、他の方からの上がっている、nfs や samba を利用する方が処理内容自体は楽だと思いますが。 | ||||
|
投稿日時: 2007-09-05 02:32
あるかな さん、ありがとうございました。
教えて頂いたsshを用いる方法にて、下記の操作で目的のdarで作ったファイルを直接転送する事に成功しました。 (cd /PathTo && dar -c - -g ./BackupDir )|ssh -p SSH_PORT UserName@Example.jp "(cd PathTo && cat > BackupFile.1.dar)" ちなみにnfsを用いる方法は知識不足があるのと、セキュリティ的に余計なポートは開けたくないのもあり、smbはセキュリティ的に余計なポートは開けたくないのです。 ただ、メンテの面でsshポート(ポート番号は変更済み)だけは開けたかったので、sshが最適での形でした。 Windowsからはまだ試しておりませんが、cygwinを使えば同様にいけると思うので、試してみたいと思います。 もしうまくいかなければ、また質問させて頂くかもしれませんがよろしくお願いします。 どうもありがとうございました。 | ||||
|
投稿日時: 2007-09-11 18:30
再度質問させて下さい。
作ったファイルを直接転送する事はできたのですが、外部にあるファイルの差分、増分を作ると言ったら、今度こそはnfsやsambaになってしまいますでしょうか? その後いろいろ試して、下記が一番近い感じな気がするのですが、backup.1.darの中身が、差分作成するファイル名にセットされてしまいます。 cd PathTo && dar -c - -g./BackupDir -A `ssh -p SSH_PORT UserName@Example.jp "(cd /PathTo && cat ./SABUN_MOTO.1.dar)"` | ssh -p SSH_PORT UserName@Example.jp "(cd /PathTo && cat > Backup-Diff.dar)" ちなみに-Aオプションが差分作成モードで、その次が差分を作成する元ファイル名です。 -Aオプションのところには外部のファイル名をだけを渡して、darコマンドが外部のデータを受け取るにはnfsかsambaでならイメージわくのですが、sshでは無理でしょうか? また、nfsやsambaで外部のにあるデータの差分を作った場合、ネットワークトラフィックは差分作成元のデータ丸々分増えるのでしょうか? この質問はdarの作成元に聞くべきなのは分かっているのですが、英語メールがかけないので、一般的なdump等の差分の場合でも良いので教えて下さい。初心者ですみません・・・。 |
1