最近、サーバーをバックアップしたいときは、サーバーにログインして以下のコマンドを実行し、ローカル ディレクトリ「/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
、コマンド ラインのすべてをエスケープする必要がなくなります。
ただし、ディレクトリ名に特殊文字が含まれていない場合は、最初のコマンドで十分です。