cpがファイルメタデータを失います。

cpがファイルメタデータを失います。

Linux上で動作するAsustor NASがあります。どのディストリビューションを使用しているかわかりません。

SSHを使用してログインし、すべてのシェルコマンドを使用できます。内部ボリュームはext2を使用し、外部USB HDはNTFSを使用します。

コマンドを使用してファイルをコピーしようとすると、cpファイルの日付メタデータが現在の日付時刻に変更されます。

たとえば、Windowsを使用してSMBからファイルをコピーし、そのファイルが2007年に変更された場合、新しいファイルは2017年に作成されたが2007年に変更されたとマークされます。ただし、Linuxcpコマンドを使用すると、修正日も2017に変更されました。

この修正日は、Windowsエクスプローラで変更日ごとにファイルを並べ替えることができるため、私には非常に適しています。上書きするとソートできず、今はすべて作成されたようです。また、修正日を使用して、まれな古いファイルをいつ取得したかを知ることができます。

cp元のファイルメタデータを保存するためにコマンドで使用できるパラメータはありますか?

cp --preserve=timestamps更新:失敗しようとしましたが、次のように印刷されます。

cp: unrecognized option '--preserve=timestamps'
BusyBox v1.19.3 (2017-03-22 17:23:49 CST) multi-call binary.

Usage: cp [OPTIONS] SOURCE DEST

Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY

        -a      Same as -dpR
        -R,-r   Recurse
        -d,-P   Preserve symlinks (default if -R)
        -L      Follow all symlinks
        -H      Follow symlinks on command line
        -p      Preserve file attributes if possible
        -f      Overwrite
        -i      Prompt before overwrite
        -l,-s   Create (sym)links

-p示されているとおりに試行するcp: can't preserve permissions of '...': Operation not permittedと、テストできる限りタイムスタンプが保存されます。

答え1

man cpコピーコマンドのマニュアルページを読むと、これらのフラグを見つけることができます-p and --preserve

-pそれは同じです--preserve=mode,ownership,timestamps

そして

--preserve[=ATTR_LIST]指定された属性を保持し(デフォルト:)mode,ownership,timestamps、可能であれば属性を追加します。context、、、、linksxattrall

.cp -pcp

答え2

いくつかわかるところがあると思います。

どのディストリビューションを使用しているかわかりませんでしたが、アップデートにはディストリビューションをBusyBox v1.19.3として識別する出力が含まれていました。見ているAsustor NAS開発者ガイド問題のあるオペレーティングシステムが何であるかを確認してください。忙しい箱

これ@roaimaが投稿した回答コマンドのマニュアルページを参照してくださいcp。これは一般的に意味がありますが、この場合は意味がないかもしれません。

BusyBoxは、おそらくほとんどの人に慣れている一般的なLinuxバージョンとは少し異なる環境で組み込みデバイス用に設計されたミニマリストLinuxオペレーティングシステムです。特に、マニュアルページはNASで使用できない場合があり、コマンドの機能、動作、および構文が若干異なる場合があります。 BusyBoxのドキュメントは次のとおりです。

cpBusyBoxのコマンド項目は次のとおりです。

cp

cp [OPTIONS] SOURCE DEST

Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY

Options:

        -a      Same as -dpR
        -d,-P   Preserve links
        -H,-L   Dereference all symlinks (default)
        -p      Preserve file attributes if possible
        -f      Force overwrite
        -i      Prompt before overwrite
        -R,-r   Recurse
        -l,-s   Create (sym)links

-pより多くの機能を備えたディストリビューションで利用可能なより柔軟な構文はありませんが、オプションフラグがまだ存在し、通常と同じ意味を持っていることがわかります。

--preserve[=ATTR_LIST]

cpこれは、このフラグを使用してコマンドを実行しようとしたときに表示される使用法メッセージと一致します--preserve

フラグが機能していないと述べたので、試してみるもう1つの-pオプションは、フラグなしでファイルをコピーしてから、次の-pコマンドtouchを使用して修正時間を更新することです。

root@busybox:~# cp original_file new_file
root@busybox:~# touch -r original_file new_file

それでも問題が解決しない場合は、受信したエラーメッセージを含めるように質問を更新する必要があります。コピーするファイルのプロパティ、ファイルをコピーする場所、実行中のユーザー、ユーザー名で実行されている正確なコマンド、およびユーザー名の時点でログインしているユーザーの下で、そのコマンドを実行しています。

つまり、cp -pマウントされたボリューム間でコピー中であり、ファイル所有者があるボリュームにはありますが、別のボリューム(またはその内容に似たもの)には存在しないため、コマンドが権限関連のエラーを生成する可能性があると思います。

関連情報