ネットワーク SMB 共有の Finder (OSX) でフォルダーがグレー表示される

ネットワーク SMB 共有の Finder (OSX) でフォルダーがグレー表示される

我慢してください。これは長くて複雑ですが、要約すると、OSX はファイル (共有またはローカル) の追加属性をどこに隠すのでしょうか?

エンタープライズ環境で問題が発生しています。Oracle ZFS セットアップがあり、OSX マシンはボリュームを SMB マウントしています。

ユーザーがフォルダーを別の場所に移動しようとして、途中でキャンセルしたため、両方の場所のフォルダーがグレー表示になりました。Finder では、フォルダーの作成日と変更日は 06/13/1943 06:13:00 と表示されます。Linux ワークステーションでファイルを stat すると、正しい作成日と変更日が表示されます。次に、Linux ワークステーションまたは OSX ワークステーションからファイルにアクセスし、ターミナル経由でフォルダーを表示し、フォルダーに対して open コマンドを使用することもできます。しかし、Finder 経由ではグレー表示のままで開くことができません。これは、このファイルにアクセスしているすべての OSX ワークステーションに影響しました。どのワークステーションもファイルを表示できませんでしたが、Windows と Linux では問題ありませんでした。

この問題を解決するために、非推奨の GetFileInfo コマンドと SetFile コマンドを使用することになりました。

コミュニティへの質問は、これらの属性はどこに保存されているのかということです。ls -la または stat を使用してもファイル上に表示されません。しかし、GetFileInfo で調べたところ、そこにありました。OSX が奇妙な Samba キャッシュを実行してサーバー上に保存しているかどうか、またはこれを愚かな .DS_Store ファイルに保存しているかどうか、誰か知っていますか?

助けてください!!! お願いします

答え1

OS X には、ネイティブでサポートされていないボリュームに追加のメタデータを保存する方法がいくつかあります。

  • FATボリュームなどでは、メタデータはファイル名に「._」プレフィックスが付いた別のファイルとして保存されます。アップルダブル形式。たとえば、元のファイルが「somefile.txt」で、それを FAT32 ボリュームにコピーした場合、データは「somefile.txt」にコピーされ、メタデータは「._somefile.txt」として保存されます。

  • SMB経由でマウントされたNTFSボリュームでは(私が完全に理解していない特定の条件が適用される場合)、メタデータは次のように保存されます。NTFS代替データストリーム

OracleサーバーのSMB実装が代替データストリームをサポートしているかどうかはわかりませんが、おそらくサポートしており、Macは追加のメタデータを保存するためにそれらを使用しています(サーバーはおそらくそれらをZFS拡張属性として保存しています)。サーバー上で直接それらを探すこともできますし、Windowsクライアントからボリュームをマウントして、ストリーム見ることができます。

答え2

1984 年 1 月 24 日午前 3:00 を取得していましたが、これはイースター エッグ (最初の Mac が販売された日) です。転送中は転送が完了するまでタイムスタンプが残ります (コピーが終了しても日付が自動的に修正されないという不具合がありました)

グレー表示されているフォルダーが特定のフォルダー内の最上位レベルであると仮定します (そうでない場合は、gci コマンドに「-recurse」を追加し、find コマンドから「-maxdepth 1」を削除します)。

ADS ではありません (WinOS マシンの PowerShell 上):

    gci -path 'd:\specificfolder' | % {$_.fullname} | gi -stream *

AppleDouble ではありません (正常な特定のフォルダに接続し、次に不良な特定のフォルダに接続し (つまり、不良なフォルダには「-1」が追加されます)、次にターミナルで):

    rm /Volumes/specificfolder-1/._*  && rm /Volumes/specificfolder-1/.DS_Store

Windows は不正なフォルダーでも問題なく動作します (日付も正しく認識します)。Mac の内部の UNIX (または Linux) がコマンドで正しい日付を認識するというあなたの意見は正しいです。ls -laまた、すべての MacOS でグレー表示の現象が発生するため、コピーに使用したマシンに固有の問題ではありません (Windows でファイルをコピーするとグレー表示のコピーが生成されるため、WinOS は間違いなくその隠し情報を転送する方法を知っています)。

したがって、私ができることは、問題がどこにあるのかを正確に特定することと、あなたの解決策に同意することだけです (ただし、右クリックして「情報を見る」または選択して「command+i」は、この記事の執筆時点での現在の OS である High Sierra でも廃止されていないことに注意してください)。ただし、多数のフォルダーがグレー表示されている場合は、自動化した方がよいでしょう。そのため、何かを追加するには、次の 2 つのコマンドを実行できます。

    find /Volumes/specificfolder/ -maxdepth 1 -type d -exec getfileinfo {} \; \
    | egrep "directory|created" | sed -e 's/directory: "\(.*\)"/\1/' \ 
    | sed -e 's/created: \(.*\)/\1/' \
    | sed -e 's#/Volumes/specificfolder#/Volumes/specificfolder-1#' > temp.txt


    while read oddline; do read evenline; setfile -d "$evenline" "$oddline"; \
    done < temp.txt

関連情報