0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Unix・Linux] tarのアーカイブファイルを作り、(現在のサーバに一時的にも保存せず)別のサーバにSSH経由で直接保存

Last updated at Posted at 2025-04-19

方法自体は別の記事にあったものを参考にしただけですが、経緯まで書いておくと役に立つかもと思い書いておきます。

経緯

私はWebサーバやその他もろもろのオンラインツールを使うため、VPSを借りているのだが、それを1つ閉鎖することにした1。その際、バックアップとしてディレクトリのアーカイブを一括で取りたかったのだが、以下の条件があった。

  • ファイルの権限などを保持したかったため、tarでアーカイブしたかった
  • しかしそのサーバに空き容量が少なく、tarのアーカイブファイルを一時的に保存しておくのは不可能だった
    • VPSなのでストレージの容量を上げることはできるにはできるのだが、もちろん費用がかかるので、そこまでして実現したくはなかった

実現方法

以上のことから、tarのアーカイブファイルを直接別のサーバ2に保存できる方法がないか調べていたら、以下のような記事が見つかった。

これらの記事で取っていた方法は以下のものであった。

  • アーカイブしたい内容のあるサーバ側でtarをするのだが、その結果をファイルに直接書かず標準出力に出す(tar -cvjf - ディレクトリ
    • tarコマンドにおいては、「f」オプションの直後には保存するファイル名を書くのだが、これを「-」とすると標準出力になる
  • その出力をリダイレクトでsshに投げる

コマンドで書くとこんな具合(圧縮形式がbzip2の場合で書いています)。アーカイブを取りたい内容が含まれているサーバで

tar -cvjf - SOURCE_DIR | ssh -i KEY_FILE USER@TARGET_SERVER 'cat > /path/to/archive.tbz'

とする。SOURCE_DIRがアーカイブを取りたいディレクトリ、KEY_FILEが保存先のサーバのSSH接続の鍵ファイル、USERが保存先のサーバのユーザ名、TARGET_SERVERが保存先のサーバ、/path/to/archive.tbz が保存先のサーバにおけるアーカイブのファイル名である。

補足

私の環境での実際の実行においては、最初のtarコマンドにsudoを付け、管理者権限で実行していた。これは保存したいディレクトリにおいて、ファイルのオーナーが入り混じっているためであった。(例えば、ApacheやnginxなどのWebサーバソフトは、それ専用のアカウントで動くので、それらにより作られたファイルもまとめてアーカイブしたかった。)

  1. 経緯としては、VPSのOSの変更をしたかったのだが、そうすると移行が完了するまでサーバの機能が止まってしまうため、「新しいVPSを1つ借りる」→「移行が完了したら古いVPSを止める」という手順で移行したのであった。

  2. なお、アーカイブファイルを保存した先は前記の移行先のVPSだったのだが、移行先のVPSへの環境移行自体は別途rsyncでファイルをコピーしていた。アーカイブファイルは自分のパソコンに保存するためである。
    自分のパソコンに直接tarファイルを移行できれば一番よかったのだが、(自分のパソコンが外部からSSH接続できるのでない限り)「アーカイブを取りたいサーバ側でsudoする」という条件で自分のパソコンにアーカイブファイルを直接保存できる方法が見つけられなかった。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?