Rsync - 分割フォルダ/サブフォルダ構造

Rsync - 分割フォルダ/サブフォルダ構造

私はopenmediavault(OMVはopenmediavault.orgのNASソフトウェア)を使用しており、他の共有が定義されています。共有の1つには、次のフォルダ構造があります。 (例)

Subfolder"ABC"/Subsubfolder"SWU"/*.*Files   
Subfolder"ABC"/Subsubfolder"SXY"/*.*Files
Subfolder"ABC"/Subsubfolder"ZWE"/*.*Files   
Subfolder"BCD"/Subsubfolder"SWU"/*.*Files
Subfolder"CDE"/Subsubfolder"ABC"/*.*Files   
Subfolder"TXY"/Subsubfolder"SWU"/*.*Files

OMV内でrsyncを介して2つの異なる共有に分割したいのですが、include / excludeを使用する際に問題があります。 rsyncの可用性は制限されていますが、OMV-Rsync GUIにはinclude / excludeステートメントを入力できる追加のオプションフィールドがあります。 オマビ

サブフォルダに分割したいです。サブフォルダがある部分として「0」から「Sj」で始まり、もう一方の部分が「Sk」から「Z」で始まります。

私はすでに試しました。

--exclude={/S[k-z]*/,/[T-z]*/} 

しかし、これは期待どおりに機能しませんでした。テスト実行では、たとえば、Zur/S056776/ フォルダのファイルも同期されていることが示されます。

ベストアンサー1

編集された質問と一致するように回答が編集されました。

次の除外パターンを試すことができます。ディレクトリをパブリックフォルダの上に変更し、folder実際のパブリックフォルダ名と一致するようにパターンを変更します。

--exclude={/folder/S[k-z]*/,/folder/[T-z]*/}

試したパターンがなぜ機能しないのかわかりません(ただし、機能しないディレクトリを正確に表示すると、問題を見つけるのに役立ちます)。

--exclude={/S[k-z]*/,/[T-z]*/}

編集2,3 - Linux OSを実行しているNASサーバー

NASサーバーはLinuxオペレーティングシステムを実行します。 openmediavault、OMVをダウンロードしてテストしました。sshサーバーを実行しており、rsyncコンピュータとサーバー間でファイルを転送し、サーバーにTelnetを転送し、sshサーバー内で実行するために実行できます。rsync

  • ログイン情報を変更していない場合

Webインターフェース

User: admin
Password: openmediavault

クライアント(SSH、コンソール)

User: root
Password: <The password that you have set during installation>
  • ターミナルウィンドウを開き、以下を介して接続します。ssh

    ssh root@ip-address-to-your-server
    # example: ssh [email protected]  # if local
    
  • 鍵認証を使用してrsyncサーバーにログインまたは実行します。

  • サーバーでコマンドを実行する

    cd 'path-to-directory-above-folder'
    
    mkdir target1  # only once, or use a target above your current directory
    mkdir target2  #               -"-
    
    rsync -Havn --exclude={/target*/,/folder/S[k-z]*/,/folder/[T-z]*/} * target1
    rsync -Havn --exclude={/target*/,/folder/[0-R]*/,/folder/S[0-j]*/} * target2
    
  • 別のコマンドを実行して、すべてが問題ないことを確認できます。

    for i in $(find folder);do test -e "${i/folder/target1\/folder}" || test -e "${i/folder/target2\/folder}" || echo "$i not copied";done
    
  • 完了したら、サーバーからログアウトします(私の場合はユーザーmyselfとからroot)。

    exit
    

    ここに画像の説明を入力してください。

元の答え

よく分からないけど考える次のコマンドラインは必要なものを生成します。

テストディレクトリには、テスト用に複数のサブディレクトリとファイルに、、、、およびサブtarget1ディレクトリを作成しました。target2folderfolder

rsync -Havn --exclude={/target*/,/folder/S[k-z]*/,/folder/[T-z]*/} * target1

rsync -Havn --exclude={/target*/,/folder/[0-R]*/,/folder/S[0-j]*/} * target2
  • まず-n、「模擬実行」オプション(ここに示すように)を使用して実行して、実行する操作を確認します。
  • 次に、(おそらく修正後)必要な操作を実行したら、ディレクトリ構造を削除して-nターゲットディレクトリにコピーします。rsync

次のディレクトリツリーを使用してテストしました。

$ find |sort
.
./folder
./folder/ABC
./folder/ABC/SWU
./folder/ABC/SWU/file
./folder/ABC/SXY
./folder/ABC/SXY/file
./folder/ABC/ZWE
./folder/ABC/ZWE/file
./folder/AIB
./folder/AIB/Sja
./folder/AIB/Sja/file
./folder/AIB/Skb
./folder/AIB/Skb/file
./folder/AIB/SWU
./folder/AIB/SWU/file
./folder/BCD
./folder/BCD/SWU
./folder/BCD/SWU/file
./folder/CDE
./folder/CDE/SWU
./folder/CDE/SWU/file
./folder/Sja
./folder/Sja/Skb
./folder/Sja/Skb/file
./folder/Sja/SWU
./folder/Sja/SWU/file
./folder/Skb
./folder/Skb/Sja
./folder/Skb/Sja/file
./folder/Skb/SWU
./folder/Skb/SWU/file
./folder/TXX
./folder/TXX/Sja
./folder/TXX/Sja/file
./folder/TXX/Sjb
./folder/TXX/Sjb/file
./folder/TXX/Skb
./folder/TXX/Skb/file
./folder/TXY
./folder/TXY/SWU
./folder/TXY/SWU/file
./folder/Zab
./folder/Zab/ABC
./folder/Zab/ABC/file
./folder/zBC
./folder/zBC/ABC
./folder/zBC/ABC/file
./folder/zBC/ABC/target
./folder/zBC/target
./target1
./target2

次の「テストの実行」を実行します。

$ rsync -Havn --exclude={/target*/,/folder/S[k-z]*/,/folder/[T-z]*/} * target1
sending incremental file list
folder/
folder/ABC/
folder/ABC/SWU/
folder/ABC/SWU/file
folder/ABC/SXY/
folder/ABC/SXY/file
folder/ABC/ZWE/
folder/ABC/ZWE/file
folder/AIB/
folder/AIB/SWU/
folder/AIB/SWU/file
folder/AIB/Sja/
folder/AIB/Sja/file
folder/AIB/Skb/
folder/AIB/Skb/file
folder/BCD/
folder/BCD/SWU/
folder/BCD/SWU/file
folder/CDE/
folder/CDE/SWU/
folder/CDE/SWU/file
folder/Sja/
folder/Sja/SWU/
folder/Sja/SWU/file
folder/Sja/Skb/
folder/Sja/Skb/file

sent 742 bytes  received 106 bytes  1,696.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)

そして

$ rsync -Havn --exclude={/target*/,/folder/[0-R]*/,/folder/S[0-j]*/} * target2
sending incremental file list
folder/
folder/Skb/
folder/Skb/SWU/
folder/Skb/SWU/file
folder/Skb/Sja/
folder/Skb/Sja/file
folder/TXX/
folder/TXX/Sja/
folder/TXX/Sja/file
folder/TXX/Sjb/
folder/TXX/Sjb/file
folder/TXX/Skb/
folder/TXX/Skb/file
folder/TXY/
folder/TXY/SWU/
folder/TXY/SWU/file
folder/Zab/
folder/Zab/ABC/
folder/Zab/ABC/file
folder/zBC/
folder/zBC/ABC/
folder/zBC/ABC/file
folder/zBC/ABC/target/
folder/zBC/target/

sent 713 bytes  received 100 bytes  1,626.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)

おすすめ記事