7

タスク: システムをリモートでアップグレードしたり、新機能を追加したりする機能を提供すること。

やるべきことターゲット マシンの現在の環境のバックアップを作成し、アップグレードがどこかの段階で失敗した場合は、元の環境に戻します。

私のディレクトリ構造は次のようなものだとしましょう:

/home/user/project1/....bla bla

プロジェクト 1 には、シンボリック リンク、ハード リンク、ソフトウェアおよびファームウェアの実行可能ファイルなどが含まれます。

私のジレンマ

戦略 1 または 2 を使用する必要がありますか?

  1. アップグレードが失敗した場合は、現在の環境全体をコピーして元に戻す必要がありますか?

    -> cp -p -r /home/user/project1/* /home/user/project1_backup/

    アップグレードに失敗した場合 -->

    mv /home/user/project1_backup/ /home/user/project1

  2. 環境全体を tarball し、アップグレードが失敗した場合は untar する必要がありますか? tar ボールを作成するには、シンボリック リンクとハード リンクを保存することに少し懐疑的です.. untar するときも同じです。

どの方法に従うべきか、そしてtarボールアプローチを使用する場合、bashコマンドはどうなるかという具体的な回答を提供してください。

私が知っ ている限り、tar ボールを untar する間、 tar -cvfzgunzipはリンクと許可を保持しません。光を投げてください?

4

1 に答える 1

10

2 番目のオプションを使用します。tarball を作成します。tarball にはいくつかの利点があります。

  • ファイルシステム間で許可/特殊ファイルを保持できます (ext* フォルダーを NTFS ファイルシステムにバックアップする場合に便利です)。
  • 1 つの大きなファイルのコピーは、1000 個の小さなファイルよりも高速です
  • 圧縮できます。

コマンドは次のとおりです。

tar --preserve-permissions --preserve-order -jc /path/to/your/folder > /path/to/your/backup_file.tar.bz2

これにより、許可、シンボリックリンクが保持されます。ハードリンクについては、このリンクを提供します ( http://www.gnu.org/software/tar/manual/html_node/hard-links.html )

(ただし、デフォルトでは、tar はハードリンクを保持します)

システムをアップグレードする前に、tarball をテストすることを忘れないでください !!

(アーカイブが正しく作成されていない場合、ほとんどすべてのデータの損失を回避できます)

于 2012-06-15T16:52:11.177 に答える