KDPV、誇大宣伝のため、炎ではありません。
バックアッププロセスの苦痛を緩和するための私の試みは、少なくとも少しです。 私が提案した要件とその実装方法。
この記事はバージョン管理システムに関するものではないとすぐに言います。 何人がCAD図面をGitに入れていますか? 100メガバイトのグラフィックファイルですか? 毎日? クラウドストレージについてではありません。 特定のニーズの実装に関する記事。友人や同僚が通常のMS Windowsを使用して、自宅やオフィスで何かを作成し、何度も表明しています。
図面内のページを削除したり、スケッチ内のレイヤーを組み合わせたりするのは1週間前には価値がないと気づいたら。 増分バックアップであっても、バックアップが作成されたとしましょう。 この時点で、私が最後にやりたいことは、コンテナからファイルを取得する方法、コマンドラインキーをグーグル検索する方法、およびこれらすべてを理解することです。 私は最も簡単なことを望んでいます-任意のファイルマネージャーがファイルの最新バージョンを見つけるか、1週間前に、コンテンツのハッシュではなく名前でそれが優れています。 間違ったファイルですか? たぶん2週間前に必要ですか?
だから私の開発がありました。 彼女のブロと呼ばれます。 暗号化は一切解除されません。
首謀者はrdiff-backupユーティリティでしたが、「致命的な欠陥」がありました。 Pythonで書かれており、データを圧縮テキストファイルに保存します。 彼女が勤務日の終わりに働いたとき、または就寝の準備をしているとき、20分間待つことは受け入れられませんでした。 非常に長い名前は処理できません。 必要なファイルを1日前にn回の編集から必要に応じて「巻き戻す」ことができると考えるのは恐ろしいことです。
例として、フォルダーをバックアップする方法を示します。
buro --backup --srcdir=" " --dstdir=" "
dstdirとして指定されたフォルダーにburo.dbファイルとミラーフォルダーが作成されます。これは、srcdirフォルダーの完全なコピーになります。 次回同じコマンドを実行すると、バックアップ開始タイムスタンプと呼ばれるサブフォルダーがdstdirフォルダーに作成され、前回の起動と比較して、変更または削除されたファイルが移動されます。 次のようになります。
<2017-06-14T00-01-34.771>
< >
1.doc
<2017-06-15T00-57-35.858>
.xls
<mirror>
< >
1.doc
2.doc
< >
Vivaldi.mp3
.xls
buro.db
ご覧のとおり、ファイルとその以前のバージョンをファイルマネージャに取得する機能は保持されていました。 保存された名前と方法。 やった!
リザーブからのファイルは、次のコマンドによって復元されます。
buro --restore --srcdir=" " --dstdir=" "
ここではすべてが簡単です。 特定の日付のフォルダーの状態が必要な場合は、–timestamp引数を追加し、「YYYY-MM-DD HH:mm:SS.SSS」の形式で日付を指定します。次に例を示します。
buro --restore --srcdir="z:\backup" --dstdir="d:\documents" --timestamp=”2017-06-15 00:00:00.000”
バックアップ状態の正確な時間を指定する必要はありません。中間状態を指定できます。
増分は多くのスペースを占有しますか? 手を削除する必要はありません。パージコマンドがあります。 例:
buro --purge --srcdir=" " --older="P30D"
引数olderは、特定の日付、またはISO 8601形式の期間を示します(上記の例では、P1Y2M3DT4H5M6S、30日の期間が選択されています)。
しかし、まったく同じVisual Studioでさえ、毎回数メガバイトのサービスファイルを生成します。 場所は無料ではありません。 除外するファイルマスクとフォルダーを構成しますか? Pfff ...ファイル圧縮オプションがあります! --compress引数を--backupコマンドに追加すると、各ファイルはbzip2アーカイブに変換されます。 拡張子「.bz2」もファイル名に追加され、圧縮率は1〜9の数値で指定されます(デフォルトでは5)。 例:
buro --backup --srcdir="d:\myprojects" --dstdir="g:\backup" --compress=9
少なくとも私のファイルマネージャーでは、ファイルを引き出すことができます。 NTFS圧縮オプションがさらに圧縮されるとは思わない。
Buroが開発した私の典型的なバックアップシナリオは、リムーバブルメディアまたはネットワークドライブに保存することです。 データは十分に管理されていない環境に転送されるため、機密性は損なわれません。 リムーバブルメディア、特にネットワークドライブの暗号化は、特に他の場所でファイルの操作を続ける予定の場合、常にちょっとした悲しいトピックです。 しかし、解決策があります! 組み込みの暗号化。 --passwordオプションが--backupコマンドに追加されます。 拡張子「.encrypted」がファイル名に追加されます。圧縮と暗号化を同時に使用できますが、拡張子は「.encrypted」のままです。
企業に不適切なセキュリティアカウントがあり、「Salary manual.xls.encrypted」ファイルの出所について質問があるとします。 このために、名前を暗号化するオプション--encodenamesが実装されています。
例。 ファイルがあるディレクトリ
<.github>
<doc>
<fmt>
<support>
<test>
.gitignore
.travis.yml
Android.mk
ChangeLog.rst
CMakeLists.txt
CONTRIBUTING.rst
LICENSE.rst
README.rst
になります:
<3kOFykh>
<aqFkiIL7WrQu>
<fInOJigKGsSu>
<QCvcAkh>
<WmT4cT0A>
Au!U33x!41SS(8Ir
BuN0kVhe85aPkQh2$
fS1twqYhBCWCagGr
IKNW$LFo3$x9Mgb!rQd
nzSFA6G3RGfKkFA~XaXDZ
pWWMxno894zDuu0L!s3WY
rHtwmdKLrYxkWN~)NtKCuxH4Q
UiJ~)YM0zu01O8g52x~iAPIk
暗号化実装の技術的な詳細に興味がある場合:
パスワード保護オプションを使用すると、「buro.db」ファイルも暗号化されます。 データベースエンジンはBerkeley DBで、AES CBC 128ビットアルゴリズムでデータを暗号化します。キーはSHA1(パスワード+ソルト)から取得されます。 私のユーティリティは、Argon2関数を介してユーザーパスワードを渡し、出力で256ビットのデータを受信し、データベースのパスワードとして機能するテキスト文字列に変換します。 ChaCha20アルゴリズムは、ファイルと名前の暗号化に使用されます。 キーはランダムに生成され、データベースが保存されます。 ファイルごとに独自のキーを取得するのが面倒だったので、使用します。 1つのファイルの異なるバージョンを互いに重ねることができないように、それぞれに異なるNONCEが生成されます。暗号化されたファイルの最初の8バイトとして書き込みます。 暗号化前のファイル名は、元の名前の長さを推測しにくくするために、単純なLZのようなアルゴリズムによって圧縮されます。 間違えた場合は修正してください。
退屈な詳細:
- 情報メッセージはstdoutに、エラーメッセージはstderrに表示されます。
- コピーおよび移動先に関する詳細情報を表示するには、-verboseオプションを使用します。
- メッセージにタイムスタンプを追加するには、-printtimestampオプションを使用します。 ログレベルを表示するには、-printloglevelを使用します。
私はデータの整合性制御をチェックサムで追加しませんでした、データ転送の過程で私見、そして多くのレベルで制御があります。 あなたが本当にしたい場合は、圧縮オプションを使用して、制御があります、私はちょうどそれをします。
興味がある人のために、 ソースコードとバイナリへのリンク。
ps Buroの開発中に、SSDを亡くしました。 なんて皮肉だ。