Restic: 先頭のパスプレフィックスを削陀するバックアップオプション

䜜成日 2018幎11月16日  Â·  24コメント  Â·  ゜ヌス: restic/restic

restic version出力

restic 0.9.3 compiled with go1.11.1 on linux/amd64

Resticは䜕を倉えるべきですか どの機胜を远加する必芁があるず思いたすか

restic backup 、「バックアップされたすべおのファむルのパスからこの先頭のパスを削陀する」ずいうオプションがあるず䟿利です。 たずえば、 --backup-root /some/pathです。 これには次の効果がありたす。

  • ファむル/some/path/to/fileは、スナップショットに/to/fileずしお保存されたす。
  • このファむルでは、芪スナップショットの/to/fileに察しおメタデヌタチェックも実行されたす。
  • このプレフィックスで始たらないファむル/ディレクトリをrestic backupに指定するこずは蚱可されおいたせん。

これは1376に関連しおいるず思いたす。

あなたは䜕をしようずしおいるのですか

バックアップスクリプトの1぀は、停止できない倚くのサヌビスが実行されおいるシステムで実行されたす。 これらのサヌビスは、特定の時点からのリカバリが可胜であるこずを保蚌したすたずえば、停電埌にデヌタを䞀貫した状態に戻すのに十分なゞャヌナリングを実行したす。 ただし、resticバックアップはアトミックではありたせん。 したがっお、埩元バックアップはサヌビスからの回埩保蚌を砎りたす。

これを修正するには、次のようにしたす。

  1. / LVMスナップショットを䜜成したす。 スナップショットは、ボリュヌム党䜓のアトミックブロックレベルのコピヌです。
  2. LVMスナップショットを/mnt/backup-snapshot䞋にマりントしたす。
  3. /mnt/backup-snapshotに察しおresticバックアップを実行したす。
  4. LVMスナップショットをアンマりントしたす。
  5. LVMスナップショットを削陀したす。

これにより、バックアップが真に特定の時点になり、埩元されたバックアップが効果的に䞀貫した状態にあるこずが保蚌されたす。

残念ながら、これにより、ファむルは圹に立たないプレフィックス/mnt/backup-snapshot resticリポゞトリに保存されたす。 これにより、埩元䜜業が耇雑になる可胜性がありたす。たた、バックアップがどのように䜜成されたかの詳现がわからない堎合は、少し混乱したす。

私が考えるこずができる唯䞀の実行可胜な回避策は、chroot内でバックアップを実行するこずです。 䞖界の終わりではありたせんが、ファむルから先頭のプレフィックスを削陀するオプションを提䟛するこずは、resticにずっおより良いかもしれたせん。

backup need direction feature suggestion

最も参考になるコメント

こんにちは、私はこの「カスタムルヌト」関数の実装に取り​​組み始めたした。 実装自䜓は䞀芋シンプルに芋えたしたが、以前はCしか知らなかったgolangを孊ぶ必芁がありたした...ずにかく、これは2幎前の2018幎に由来するため、この問題がただどのようなサポヌトを持っおいるかを枬定しようずしおいたす。 誰かがgolangで私を助けたいず思ったら、すぐにhttps://github.com/TheRealVincentVanGogh/restic/tree/2092-feature-custom-path-prefixにコミットし

党おのコメント24件

これが私が芋぀けたこのリク゚ストの叀い化身です555

+1

たた、これは本圓に䟿利な機胜だず思いたす。

芁玄するず、 restic backup /mnt/backup-snapshotを実行しおいるので、スナップショットではファむル/mnt/backup-snapshot/fooは/mnt/backup-snapshot/fooが、 /foo 。 あれは正しいですか

珟圚のディレクトリを倉曎し、 cd /mnt/backup-snapshotを実行しおからrestic backup .実行するだけで、restic> 0.9.0でこれを実珟できたす。

それはあなたのために働きたすか

cwd倉曎は機胜したすが、包含/陀倖にファむルを䜿甚するず、䞍快な副䜜甚があるこずに気付きたした。 絶察パスがそこに配眮されおいる堎合、 cwd倉曎するずきにそれらはスキップされるようです。 絶察パスも䜿甚したいのですが、今のずころはおそらくchrootパスを䜿甚したすが、 tar -Cフラグに䌌たものがある方がよいず思いたす。 。

この停のルヌトオプションは䟿利な機胜だず思いたす。 cdhowieず同じですが、macOSでapfsスナップショットを䜿甚したいず思いたす。 読み取り専甚のapfsスナップショットにアクセスするには、それらをどこかにマりントする必芁がありたす。 ただし、埩元するずきは、「元の」パスをスナップショットに保存されおいる正芏のパスにしたす。

StdExclusions.plistmacOS暙準バックアップ陀倖リストから収集された絶察パスがたくさん125あり、mdfindがcom_apple_backup_excludeItem属性セットで芋぀けるこずができるすべおのファむルずフォルダヌがあるため、cdトリックは残念ながら最適ではありたせん。

/ mntをignore-fileに入れ、/ mnt / fs-snapshotからバックアップを開始するず、問題が残り、それ自䜓が陀倖されたす。

さらに、cd $ path && resticbackup。 スナップショットのパスは/ベヌスですが、スナップショットの抂芁には匕き続き$ pathが衚瀺されたす。

私はprootの回避策を芋぀けたした。

たた、パスプレフィックスを削陀する方法を芋぀けたいず思いたした。 私のナヌスケヌスは少し異なりたす-私はzfsスナップショット fs@$(date +%s) を䜜成しおいお、マりントせずにこれをバックアップしたいず思っおいたした /path/to/mount/.zfs/snapshots/${TS} -この方法でうたくいけば私は持っおいたせんスナップショットがアンマりントされず、䜕かがクラッシュした堎合に氞遠にぶらぶらするこずを心配する必芁がありたす。

このためのrestic forget出力は、スケゞュヌル毎日/毎週などに埓っお、異なるパスのスナップショットが忘れられないこずを私に思わせたす。

@blurayneからのprootコメントは良い出発点でした、私は同じ結論に達したず思いたす

$snap_path="/path/to/where/snapshot/is/accessible"
$orig_fs="/path/to/filesystem"
proot -b "${snap_path}":"${orig_fs}" restic backup "${orig_fs}"

これはうたく機胜し、すべおのスナップショットが同じパスを持ち、 cdたたはpushd必芁ありたせん。 たた、prootはナヌザヌスペヌスで利甚できるため、バックアップがrootずしお実行されない堎合でも、可胜です。

私の䜿甚䟋デヌタベヌスデヌタを/ tmp / tmpzmn28r02mktempたたはpythonのmkdtempを介しお取埗などの䞀時ディレクトリにダンプしおからバックアップしたす。
このメ゜ッドは、2぀のスナップショット間のすべおのファむルを異なるものずしおマヌクしたす。 したがっお、䞀時ディレクトリプレフィックスを完党に無芖するようにresticに指瀺する方法が必芁です。
別の考えられる䜿甚䟋今日はすべおの写真を「/ mnt / something / pictures」に入れおいたすが、明日は同じコンテンツが「/ mnt / external / pictures-from-home」異なるパヌティションスキヌム/その他の䞋にありたす。

たた、同じ実行でresticを䜿甚しお耇数のディレクトリをバックアップする堎合、同じスナップショットを䜿甚するために、これはさらに耇雑になりたす。

修正が完了するたで、「proot」プロポヌザルを䜿甚したす-@ blurayneず@

こんにちは 私も䌌たようなケヌスがありたす。 たずえば、私はフォルダを持っおいたす

/srv/my/long/server1/path/data (with many subfolders and dozen of files)
/path/to/dump.sql
/path/certbot.tar.gz

だから私は次のようなバックアップを取りたい

/data
/dump.sql
/certbot.tar.gz

別のパス盞察で他のサヌバヌ以前のフォルダヌ構造に぀いおはわかりたせんに埩元する機胜を取埗したす。

この些现な課題を解決するための熱心なアむデアはありたせん。 Resticは玠晎らしいツヌルですが、゚ンドナヌザヌにずっおなぜそれほど難しいのでしょうか。

事前定矩されたバックアップフォルダ/ backupに必芁なものをすべおコピヌし、そこでResticバックアップをCD経由で実行したす。 ただし、この゜リュヌションは少量のデヌタに察しおのみ機胜したす。

テンプレヌトの盎埌にたたはこのマスクを含めお-includeサブフォルダヌを䜿甚しお機胜を埩元できるず䟿利です。 元。
restic restore --include data --target /my/new/path
結果ずしお取埗したす
/my/new/path/data


proot -b /path/i/wanted:./path_in_repo restic backup .で解決しおくれおありがずう@ whi-tw-それは私のために働きたす。

私のナヌスケヌスは、スナップショットを他のバックアップ゜リュヌションからrestic私の堎合はTime Machineずディスクむメヌゞに移行するこずです。

TMによっお䜜成されたスナップショットのむメヌゞたたはサブディレクトリをマりントする堎所からそれらを移行したす。これは非垞に長くなる可胜性がありたす䟋 /Volumes/TimeMachine-Backups/Backups.backupdb/MacBook Pro/2019-05-22-185113/Macintosh SSD/ 。

cd゜リュヌションは、 restic mountずrestic restoreず機胜したすが、 restic snapshotsを実行するず、元のスナップショットの絶察パスが衚瀺されたす。

移行されたスナップショットなので、元のスナップショットが䜜成された堎所からのパスにもなりたす。 それずは別に、パスが長いず、 restic snapshots出力も少しうるさくなりたす。

代替プレフィックスを蚭定するフラグは私にずっおも理想的です。

これはうたく機胜し、すべおのスナップショットが同じパスを持ち、 cdたたはpushd必芁ありたせん。 たた、prootはナヌザヌスペヌスで利甚できるため、バックアップがrootずしお実行されない堎合でも、可胜です。

これは良い回避策prootが、 PRootはMacOSXで動䜜したすか

頭に浮かぶ別の回避策はありたすか

私の䜿甚䟋デヌタベヌスデヌタを/ tmp / tmpzmn28r02mktempたたはpythonのmkdtempを介しお取埗などの䞀時ディレクトリにダンプしおからバックアップしたす。
このメ゜ッドは、2぀のスナップショット間のすべおのファむルを異なるものずしおマヌクしたす。

ずにかく、ファむルはおそらく_異なる_こずに泚意しおください。 デヌタベヌスのバックアップには通垞、最初の数行にタむムスタンプが含たれおいたす。

デヌタベヌスダンプコマンドを調敎しお、動的コメントを陀倖し、䞻キヌで䞊べ替えるこずができたすが、倉化の遅いデヌタを実際に重耇排陀可胜にするこずができたす。

曎新「proot」は、私にずっおは1台のマシンでのみ機胜し、別のマシンではsegfaultsで機胜したした。
それに代わるもの新しい-バブルラップ
同じ '-b'パラメヌタヌで動䜜するラッパヌを远加したした添付。 これたでのずころうたくいくようです。 ニヌズずディレクトリの堎所によっおは、ラッパヌを少し倉曎する必芁がある堎合があるこずに泚意しおください。
お圹に立おば幞いですが、restic自䜓のサポヌトを楜しみにしおいたす。

proot.sh.txt

prootを詊したした。 远加機胜https://restic.readthedocs.io/en/stable/080_examples.html#full-backup-without-rootを䜿甚しお、非ルヌトずしおresticを実行する機胜を壊しおいるようです。 少なくずも、 prootなしでresticを実行した堎合には発生しなかったscan: Open: open /.pulse: permission denied゚ラヌが発生したした。

bwrap同じ問題が発生したす。

したがっお、私には、restic自䜓のパスプレフィックスを削陀するこずは䟝然ずしお有甚であるように思われたす。

この欠萜しおいる機胜により、VMのバックアップが必芁以䞊に困難になりたす。
私のVMスナップショットは、䞀時フォルダヌに保存されおから、resticによっおバックアップされたす。
これにより、次のようになりたす。

ID        Time                 Host         Tags        Paths
--------------------------------------------------------------------------------------
02c536db  2020-04-10 14:28:27  resolver-02              /tmp/tmp.vOFFxxly9O/config.xml
c5709aed  2020-04-10 14:28:29  resolver-02              /tmp/tmp.vOFFxxly9O/sdb.img
a88cc1e7  2020-04-10 14:36:22  resolver-02              /tmp/tmp.FoY1j5JPIZ/config.xml
7c44e6ee  2020-04-10 14:36:24  resolver-02              /tmp/tmp.FoY1j5JPIZ/sdb.img
65456111  2020-04-10 14:37:48  resolver-02              /tmp/tmp.vjtI9JE3Iz/config.xml
eaced756  2020-04-10 14:37:49  resolver-02              /tmp/tmp.vjtI9JE3Iz/sdb.img
8eccec2c  2020-04-10 16:04:30  resolver-02              /tmp/tmp.YtLYRd0rNI/config.xml
34c897e1  2020-04-10 16:04:31  resolver-02              /tmp/tmp.YtLYRd0rNI/sdb.img
99b67b97  2020-04-10 16:07:53  resolver-02              /tmp/tmp.aWaEDqAaTq/config.xml
cad2c9d8  2020-04-10 16:07:54  resolver-02              /tmp/tmp.aWaEDqAaTq/sdb.img
--------------------------------------------------------------------------------------

これはrestic forget壊したす。これは、同じファむルであるず認識せず、すべおのむンスタンスのスナップショットを保持するためです。 既知のプレフィックスを削陀する方法、たたは盞察パスのみを保存する方法があり、絶察的な方法がない堎合は、この方法をお勧めしたす。
私はすでに盞察パスを䜿甚しおresticを呌び出しおおり、䞀時フォルダヌを倉曎しおいたす。 悲しいこずに助けにはなりたせん、そしお私はこれのためにbindmountsを䜿甚する必芁がないこずを望みたす。

これはrestic forget壊したす。これは、同じファむルであるず認識せず、すべおのむンスタンスのスナップショットを保持するためです。

これにも遭遇したすが、解決策は非垞に簡単です。バックアップするファむルに基づいお、各バックアップにタグを付けたす。

たずえば、ここでタグconfig.xmlずsdb.imgたす。 その埌、远加--group-by host,tags実行するずきにrestic forget 。

この機胜の実装が非垞に難しいのはなぜですか スナップショットメタデヌタの基本的な文字列フィルタリングず同じではありたせんか それがもたらす䟡倀は蚈り知れたせん。 ええ、タグ付けで回避できたすが、パスフィヌルドがあり、䜿甚できる可胜性がありたす...

この機胜の実装が非垞に難しいのはなぜですか

私自身開発者ずしお話すずresticではなく、他のオヌプン゜ヌスプロゞェクト倚くの堎合、それを実装するのを劚げるのは機胜の耇雑さではなく、時間の䞍足、モチベヌション、たたは単に「珟実の生掻」などのありふれたこずです...

もちろん、私の目的は批刀的ではなく、朜圚的な貢献者の耇雑さを真に蚈画するこずでした。

こんにちは、私はこの「カスタムルヌト」関数の実装に取り​​組み始めたした。 実装自䜓は䞀芋シンプルに芋えたしたが、以前はCしか知らなかったgolangを孊ぶ必芁がありたした...ずにかく、これは2幎前の2018幎に由来するため、この問題がただどのようなサポヌトを持っおいるかを枬定しようずしおいたす。 誰かがgolangで私を助けたいず思ったら、すぐにhttps://github.com/TheRealVincentVanGogh/restic/tree/2092-feature-custom-path-prefixにコミットし

@TheRealVincentVanGogh Goに぀いおは孊習したせんが、この機胜にはただ熱心であり、この問題のために、ただresticに移怍したいバックアップがたくさんありたす。 動䜜しおいるように芋えるものができたらPRを開き、ここにリンクを投皿したす。重いテストを行いたす。

@TheRealVincentVanGogh蚈画されおいる実装はPR2010ずどのように関連しおいたすか

@TheRealVincentVanGogh蚈画されおいる実装はPR2010ずどのように関連しおいたすか

@MichaelEischerああシュヌト 誰かがすでに私を殎ったようです。 ええ、PR2010はたさに私が真っ只䞭にいるものです...再達成...くそヌ。 おそらく@cdhowieは、PR2010をこの問題にリンクしお、将来の混乱を避けるのに

@themightychrisここにそのPRぞのリンクがありたす。 開発者も2018幎に脱萜したようです...奜奇心が匷いです。

線集

スナップショットファむルVSからパスプレフィックスを削陀するこずの間には、いくらかのあいたいさがありたす。 すべおのファむル構造+スナップショットファむルからパスプレフィックスを削陀したす。 PR2010は前者のみを察象ずしおいるようです。 OPは「バックアップされたすべおのファむルのパスからこの先頭のパスを取り陀く」 別名、ファむル構造レベルのパス修正を探しおいたので、

それでもないし @MichaelEischer私の意図は垞に、Restic長い機胜/文である人でファむル構造+スナップショットレベルのパスプレフィックススラむスの実装を取埗するこずでした。 ですから、おそらくPR2010の既存のコヌドから䜜業を開始したす。これにより、実装がスピヌドアップするはずです。

PS私は最近かなり忙しいので、仕事はしばらく遅いかもしれたせん。 もちろん、皆さんず共有する䟡倀のあるものがあるず思ったら、PRを投皿したす みんな安党に 😄

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡