ギイ;

ギイ;

ギイ;

外付けハードドライブでスクリプトを実行し、tar.gzで終わる各フォルダを.app独自のアーカイブに保存したいと思います。つまり、1つのtar.gzファイルにすべてを入れたくないので、フォルダごとに1つずつ作成したいのです。

以下を使用して処理するフォルダのリストを作成できます。

find /Volumes/External1 *.app -prune -print

さて、これらのそれぞれを独自のアーカイブに圧縮したいと思います。

2番目の部分は、アーカイブを含むドライブ上のすべてのファイルと他のすべてのアイテムをコピーし、関連フォルダを除いてすべて別の場所にコピーしたいということです。

追加情報

私はネットワーク上のファイルサーバーとして機能するLinux Raid Boxを作成しました。私は主にAppleとLinuxデバイスを使用していますが、時々接続できるWindowsデバイスもあります。

私が続けている問題は、OSX .appファイルが実際にはフォルダであり、基本構造が複雑であることです。

私はネットワーク上のすべてのドライブを収集してファイルサーバーにバックアップしてきました。私は通常OSXマシンでMD5ハッシュを実行し、LinuxではMD5DEEPを使用してハッシュをチェックします。

実際の問題は、.appフォルダを処理するときにディレクトリ数とファイルサイズがほとんど一致しないことです。これらのフォルダのいずれかに到達した場合を除き、他のすべてのアイテムは完全に一致します。

すべてを簡素化するために今やりたいことは、各.appフォルダに対してtar.gzファイルを作成し、それを現在の場所(つまり、.appフォルダと同じ場所)に保存することです。 tarファイルを保存します。代わりに.appフォルダではありません。これにより、簡単にハッシュ、コピー、再ハッシュできる単一のファイルになります。

ついに作成に使用できるファイルのリストが見つかりました。

find /Volumes/External1 -name *.app -prune -print 

最後の2段階

1. アーカイブの作成

これが私の最初の難題です。このすべてのフォルダのアーカイブを作成したくありません。フォルダごとに1つのアーカイブが必要です。では、生成されたリストから展開して別々に生成されたアーカイブにリストをプッシュするにはどうすればよいですか?

2. ドライブのすべてを移動します

ドライブはMac OSX(ジャーナリング)でフォーマットされているので、実際に外部ドライブをLinuxボックスに接続するのではなく、ギガビットネットワークを介してファイルを移動します(ログをオフにする方法/ハッキングがあることを知っています。次の手順に従ってください。)コピーしてもう一度開きます。しかし、これがどのように影響するのかわからないので、一晩中実行したくありません。)

コピーコマンドを生成するとき(両端の端末でこれを実行できます)、デフォルトでコピーされたコマンドラインを一致させたいと思います。

  • 以下を除くすべての種類のドライブのファイルとフォルダ
  • フォルダ名は「.app」で終わります。
  • そのフォルダ内のファイルやフォルダではありません。
  • アーカイブを含める必要があります。

そのために、私は次のことを思い出しました。

find /Volumes/External1/ | grep -v '.app/'

直接使用しても、ファイルに送信してリストとして使用してもよい。私はファイルリストが「これが私がしたことです」とある程度教えてくれるので、より良いと思います。

私の考え

  • すべての.appフォルダのファイルリストを作成する(リスト1)

    find /Volumes/External1/ -name *.app -prune -print > files.apps.list

  • リスト1の各フォルダをアーカイブに圧縮するスクリプトを実行します(元のフォルダはそのまま残ります)。

    ご協力ありがとうございます

  • .appフォルダを除く2番目のファイルリストを作成する(リスト2)

    find /Volumes/External1/ | grep -v '.app/' > files.noapps.list

  • リスト2のスクリプトを実行してネットワークを介した各ファイルの移動

    もう一度助けてくれてありがとう。

findどちらのステップも私が利用できるリストを拡張し、-exec各ステップでtar作成できると思いますcpが、今はどのように一緒に構成するのかわかりません。

事前にありがとう

ベストアンサー1

findアーカイバーが実行されました。

find /Volumes/External1/ -name *.app -prune -exec script_to_archive_and_move {} \;

その中には、script_to_archive_and_move名前を.app引数として使用してアーカイブし、アーカイブを最終的な宛先に移動する実行可能ファイルがあります。このアプローチでは、find2番目のコマンドはまったく必要ありません。

おすすめ記事