以下は、tarとsshコマンドを組み合わせて一行で実行しているコマンドなのですが、やってることがいまいちわかりません。どなたか詳しい方説明していただけないでしょうか。
tar -cvf '-' /root/backup | ssh 192.168.1.2 "cat '-' > /tmp.tar"
自分なりの理解は以下の通りで、謎なところを解説していただければ非常に助かります。。
分解してみていきます。
1 tar -cvf '-' /root/backup
tarで/root/backupを固めいている。
(謎1) -cvfあとの '-' は何なんでしょうか?
2 | ssh 192.168.1.2
パイプでつないでssh接続
3"cat '-' > /tmp.tar"
(謎2)全体的に謎です。。
たぶん'-'が理解できればわかるのかな・・?
詳しい方ぜひご教授下さい。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
説明は難しいですね。
'-'の意味はtarやcat等のコマンドの作りに依存しますが、一般的にUNIX系のコマンドでは状況に応じて標準入力、または、標準出力を意味します。
標準入力、標準出力は本来は端末画面に表示されるもの、ぐらいの理解でとりあえずは良いのではないでしょうか。
i)パイプ'|'は左側のコマンドの標準出力を右側の標準入力に接続します。
ii)リダイレクト'>'は左側のコマンドの標準出力を、右側に指定したファイルに出力します。
iii)"cat /etc/group | cat '-' > ~/group"は"cp /etc/group ~/group"とだいたい同じ動きをします。
これを踏まえて説明してみます。
(謎1の説明) tarの"-f"オプションに'-'を指定すると、標準出力に”tmp.tarの内容”を出力します。
パイプが右側にあるので、画面には出力されずにパイプの右側にあるコマンドに渡されます。
(謎2の説明) ”| cat '-' > /tmp.tar”でパイプの左側のコマンドが出力した内容、この場合は"tmp.tarの内容"、を持つファイル(/tmp.tar)を作成します。
今回はパイプとcatコマンドの間に"ssh 192.168.1.2"が割り込んでいます。
さらっと流した"| ssh 192.168.1.2"のところが理解する上では難しいかもしれません。
やっている事はパイプ'|'とcatコマンドの間に入って、192.168.1.2上で"cat '-' > /tmp.tar"を実行しています。
ただcatコマンドを実行する前にパイプの左側の標準出力とcatコマンドの標準入力を接続してデータが流れるようにしています。
sshが干渉せずにデータが流れるように動いてくれるため、192.168.1.2上に/tmp.tarファイルが作成されます。
参考までに、同一ホスト上に/tmp.tarを作成する次の4つのコマンドは同じ動きになります。
# tar -cvf /tmp.tar /root/backup
# tar -cvf '-' /root/backup > /tmp.tar
# tar -cvf '-' /root/backup | cat '-' > /tmp.tar
# tar -cvf '-' /root/backup | ssh localhost "cat '-' > /tmp.tar"
192.168.1.2のsshdにはそれなりの設定がされていると思います。最後の例はそのまま実行しようとしても、sshdの設定によってエラーになるかもしれません。
"cat '-'"と"cat"は同じ意味とか、標準入出力のちゃんとした説明とか、いろいろ不足しているとは思いますが、理解できているところ、いないところを整理する手助けになれば幸いです。
以上
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux リナックスのリモート接続の際に使う sshコマンドについて 1 2022/11/21 19:46
- UNIX・Linux Linuxのtarコマンドで同一ディレクトリに解凍するコマンドは何でしょうか? 1 2022/04/25 12:59
- Android tar.ファイルのインストールについて知りたいです 2 2022/07/23 15:34
- UNIX・Linux linuxサーバーのキャッシュをクリアするコマンドを実行したい。 5 2023/01/24 14:52
- UNIX・Linux sshコマンドのgitが示す意味は何でしょうか? 1 2022/11/18 12:02
- UNIX・Linux Linux(fedora)でホスト名について 2 2022/06/21 14:24
- UNIX・Linux ubuntuに外部侵入できるか 2 2022/04/09 12:48
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- UNIX・Linux Linuxでの「sshコマンド」について 3 2022/06/02 11:09
- その他(データベース) AWSのcloud9で「 ls -l ~/.ssh/」のコマンドで公開鍵、 秘密鍵を知ろうとすると「 1 2023/07/09 02:10
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ViエディタとVimエディタの違い...
-
Ububtuでファイル共有できない...
-
複数のフォルダを同時に参照し...
-
bashでシングルクォート内の変...
-
ubuntu(linux)のシャットダウン...
-
LinuxのノートパソコンでDVDコ...
-
ubuntuで デイスク/deb/loopと...
-
VirtualBox ゲストOSにPC内蔵HD...
-
Ubuntuサーバーでメールを受信...
-
ssl_request_logの必要性について
-
LinuxMintが突然フリーズする
-
年末ですが大至急お願い申し上...
-
Linuxについてです last -nとい...
-
e4defragコマンドでデフラグ
-
Chrome OS フレックスはインス...
-
初期のSurface Goにubuntuをデ...
-
低スペックPCで軽量Linuxを動か...
-
LinuxでSSH接続について
-
Ubuntu系とCentOS系の違いはな...
-
ssl_error_logのエラー内容(AH...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
scpコマンドでリモートサーバの...
-
IBM漢字コードのSJIS変...
-
DOSコマンドでのワイルドカ...
-
Illustratorのデータをまとめて...
-
GNOME端末の起動 及び コマンド...
-
cactiでグラフが表示されない
-
Windows10のRegSys32に登録され...
-
rcpコマンドについて、教えて!
-
FTP接続中のコマンド実行結果を...
-
AIX ksh利用 grep 検索で マ...
-
属性変更できないです。
-
【ターミナル】MacBookにディー...
-
Linux shell ftp 転送 エラー制御
-
別名でリンク先を保存。
-
linuxのreadコマンドについて
-
Warning: Output is not to
-
UNIXシェル内での日付計算
-
telnet,rlogin,rshの違いってな...
-
loggerコマンドでkern.warning...
-
PC-DOSのバージョンの違いによ...
おすすめ情報