この特定のアーカイブ構造を維持しながら、2つ以上のハードリンクされたフォルダツリーセットをコピーするRsyncの動作構文は何ですか?

この特定のアーカイブ構造を維持しながら、2つ以上のハードリンクされたフォルダツリーセットをコピーするRsyncの動作構文は何ですか?

この特定のアーカイブ構造を維持しながら、2つ以上のハードリンクされたフォルダツリーセットをコピーするRsyncの動作構文は何ですか?

PS:SOまたはSU SEに適していますか?

現在/サンプルフォルダ構造テンプレート:

Base Folder (Source): 

C:\iMazing
   \Backups

    \{device A UDID} // Last backup of Device A (AL)
    \{device B UDID} // Last backup of Device B (BL)
    \iMazing.Versions 

       \Versions
          \{device A UDID} // Backup history of Device A (AL) 
          \{device B UDID} // Backup history of Device B (BH)
Base Folder (Destination): 

S:\ExtHDD\APPLE\iMazing.Backups  

    \{device A UDID} // Last backup of Device A (AL)
    \{device B UDID} // Last backup of Device B (BL)
    \iMazing.Versions 

       \Versions
          \{device A UDID} // Backup history of Device A (AH) 
          \{device B UDID} // Backup history of Device B (BH)


UDID名を持つフォルダの下のフォルダツリー

  • AL:{device A UDID} //デバイスAの最後のバックアップ
  • AH: {device A UDID} // A デバイスのバックアップ履歴
  • ALとAHは、それらの間にハードリンクを持つ2つのグループを形成します。
  • 私たちは一度に個別に働きたいです。

Rsyncの使用方法(Cygwin RSyncまたは上記のWindowsのいずれかの方法でお勧めします):

  • コピーする{AL+AH} などの個別のハードリンクセットCドライブからSドライブへ同時に
    • ハードリンクを維持
    • サブツリーフォルダ構造の維持
  • WindowsまたはNTFSフォルダとファイル構造に問題はありません。

返品:

  • 単一の設定(1つのRSyncコマンド)のみを実行できますか、または一度に複数の指定された設定を実行できますか?
  • 通常、2つのSETがあります。構造内に3つのSETがある場合(3つのHLフォルダがあるSET)、Rsyncのコマンドラインはどのように変更されますか?

UDIDフォルダ名を使用した実際/実際の例:

  • XL&XHは一緒にSETを形成するハードリンクフォルダツリーです。
Base Folder (Source): 
C:\Users\UserName\AppData\Roaming\iMazing\Backups

  \f22ebcffcdd1b508d3f7564431a9db98d69208ef-20190414-170122 //..(XL)  
  \iMazing.Versions
   \Versions  
    \f22ebcffcdd1b508d3f7564431a9db98d69208ef-20190414-170122 //..(XH)

ハードリンクコピーを保存するための参照ツールのリスト:
https://superuser.com/questions/997190/copy-to-another-ntfs-disk-and-preserve-hard-links/

  • 同期Windowsでの変更点
    • (複数の*NixおよびWindows: Cygwinバリアント、CW RSync、Delta Copy/Syncrify/Synaman、GRsync、RsyncBackup、Rsync.exe pkg、Rclone、AcroSync、YInterSync)
  • ln.exe - コマンドラインハードリンク-http://schinagl.priv.at/nt/ln/ln.html(勝つ)

ベストアンサー1

この質問に対する以前の反復を理解するのは難しいので、その例と一緒に、あなたが意味するものを単純化されたバージョンで繰り返します。

構造

C:\iMazing\Backups\
    AL\
        files...
    BL\
        files...
    iMazing.Versions\Versions\
        AH\
            files...
        BH\

S:\ExtHDD\APPLE\iMazing.Backups\
    AL\
        destination files...
    BL\
        destination files...
    iMazing.Versions\Versions\
        AH\
            destination files...
        BH\
            destination files...

要件は、ハードリンクと相対構造を維持しながらコピーしてAL\...コピーするAH\...ことですC:S:

実際のケース

mkdir -p iMazing/Backups/{AL,BL,iMazing.Versions/Versions/{AH,BH}} ExtHDD/APPLE/iMazing.Backups
touch iMazing/Backups/{AL/albackup,BL/blbackup}
touch iMazing/Backups/iMazing.Versions/Versions/{AH/ahbackup,BH/bhbackup}

この時点で私がしたことを見ることができますls -R。 、、、、ディレクトリに、、、ファイルが含まれているfind必要があります。ディレクトリをターゲットにコピーします。albackupahbackupblbackupbhbackupALAHBLBHALAH

rsync --dry-run -avHPR iMazing/Backups/./AL iMazing/Backups/./iMazing.Versions/Versions/AH ExtHDD/APPLE/iMazing.Backups/

-R()フラグは--relativeタグのソースパスを保持します/./。例では、これはiMazing/Backups/削除され、残りをターゲットパスに追加することを意味します。

--dry-run削除()後、-n内部ハードリンクと構造を維持しながら、ソースALおよびAHディレクトリのファイルとディレクトリをコピーします。

よくある質問

Cygwinなので、スラッシュを使用し、リンクを維持するにはフラグ()/cygdrive/{DriveLetter}を含める必要があります。-H--hard-links

rsync -aHR /cygdrive/C/iMazing/Backups/./AL /cygdrive/C/iMazing/Backups/./iMazing.Versions/Versions/AH /cygdrive/ExtHDD/APPLE/iMazing.Backups/

何が起こっているのかを見るには、-v--verbose)および/または-P()フラグを含めることができます。--partial --progressこの場合、悪名高い「デルタ」アルゴリズムや圧縮を気にしないでください(この方法は、rsyncネットワークのクライアントサーバー構成に2つのサーバーが含まれている場合にのみ機能します)。 S:ドライブをホストしているサーバーでインスタンスを実行できる場合は、はるかにrsync効率的です。rsync

--dry-run実際に何もせずに何が起こるのかを見るために追加されました。

おすすめ記事