SSH で送信中にディレクトリを tar する

SSH で送信中にディレクトリを tar する

最近、サーバーをバックアップしたいときは、サーバーにログインして以下のコマンドを実行し、ローカル ディレクトリ「/ebs1」を tar して IP xxx.xxx.xxx.xxx にある別のサーバーに送信し、そのバックアップ サーバーに「/ebs1_2019-06-02.tar」という名前で保存します。

tar -cvf - "/ebs1" | ssh -p 22 [email protected] "cat > /ebs1_2019-06-02.tar"

問題なく動作します。しかし、上記のコマンドを実行するために、バックアップされているサーバーにログインしていることに気付きましたか? しかし、バックアップ サーバーにログインしたい場合は、上記のコマンドをどのように変更すればよいのでしょうか?

答え1

こちらです:

ssh [email protected] tar cf - /ebs1 >/ebs1_2019-06-02.tar

バックアップするディレクトリにスペースや特殊文字が含まれている場合、これはうまく機能しません。その場合は、次のようなコマンドを使用する必要があります。

ssh [email protected] tar cf - "'/directory name'" >/ebs1_2019-06-02.tar

...これはすぐに不便になる可能性があります。コマンドを含むスクリプトをターゲット コンピューターに記述しtar、 経由で実行すればssh、コマンド ラインのすべてをエスケープする必要がなくなります。

ただし、ディレクトリ名に特殊文字が含まれていない場合は、最初のコマンドで十分です。

関連情報