سؤال كيفية نسخ ملف في يونيكس دون تغيير آخر مرة تعديلها؟


إذا قمت بنسخ بعض الملفات من مكان إلى آخر باستخدام cp، يتم تعيين الطابع الزمني على الملف المنسوخ إلى وقت النسخة.

هل هناك طريقة لتجنب هذا؟

أحتاج إلى نسخ الملفات دون تغيير الطوابع الزمنية الخاصة بهم.


71
2018-02-27 11:13


الأصل




الأجوبة:


cp -p عمل الحيلة. لينكس:

-p مثل --preserve=mode,ownership,timestamps

ل FreeBSD:

-p السبب cp للاحتفاظ بالسمات التالية لكل ملف مصدر في النسخة: وقت التعديل ، ووقت الوصول ، وأعلام الملفات ، ووضع الملف ، و ACL ، ومعرف المستخدم ، ومعرف المجموعة ، كما هو مسموح به بواسطة الأذونات.

و لنظام التشغيل العاشر:

-p السبب cp للاحتفاظ بالسمات التالية لكل ملف مصدر في النسخة: وقت التعديل ووقت الوصول وعلامات الملفات ووضع الملف ومعرف المستخدم ومعرف المجموعة ، كما هو مسموح به بواسطة الأذونات. كما سيتم الحفاظ على قوائم التحكم في الوصول (ACL) والسمات الموسعة (EAs) ، بما في ذلك شوك المورد.


84
2018-02-27 11:20



cp -a ومن الجميل أيضا أن تعرف ، فإنه يعني ليس فقط -p ، ولكن أيضا -R لنسخ الدلائل بأكملها و- d للحفاظ على الروابط. - casualuser
لاحظ أنه عند استخدام غنو Coreutils cp -p ليس فقط يحافظ على طابع الوقت ولكن أيضا الوضع والملكية و على فري بالإضافة إلى وقت التعديل ، فإنه يحافظ أيضًا على "وقت الوصول ، وأعلام الملفات ، ووضع الملف ، و ACL ، ومعرف المستخدم ، ومعرف المجموعة ، كما تسمح به الأذونات." نظام التشغيل العاشر بالإضافة إلى ذلك »السمات الموسعة ، بما في ذلك شوكة الموارد«. - Stefan Schmidt
في أحدث OSX ، لا يزال cp -p يمس الطابع الزمني للملف المصدر - afathman


هناك ثلاث مرات على نظام ملفات Unix ، ووقت الوصول (atime) ، ووقت التعديل (mtime) ، ووقت تغيير inode (ctime). يمكنك تغيير وقت الوصول ووقت التعديل باستخدام برنامج اللمس ، على سبيل المثال

نسخة cp اصلية
تلمس النسخ الاصليه

ومع ذلك ، لا يمكنك تغيير وقت تغيير inode.


11
2018-02-27 11:23



لوقت تغيير inode ، انظر أيضا linux - إعداد إنشاء أو تغيير الطوابع الزمنية - Stack Overflow - sdaau


عند استخدام cp من جنو Coreutils، للحفاظ على الطوابع الزمنية فقط وليس سمات مثل هوية المستخدم ، معرف المجموعة أو وضع الملف هناك المخادعة --preserve والذي يسمح بوضوح بتحديد قائمة بالسمات المراد حفظها.

cp --preserve=timestamps source destination

كن على علم على الرغم من أن بناء الجملة هذا ربما لا يكون مدعومًا على Unices الأخرى. بديل يمكن أن يكون استخدام --times معلمة rsync والتي يجب أن تكون متاحة في معظم التركيبات.


10
2018-06-09 15:45



هذا هو الجواب الصحيح. عن طريق -p ليس الجواب الصحيح. -p يحتفظ بالملكية والوضع أيضًا. التي قد لا تكون مطلوبة .. ولم يتم طرحها في السؤال. - bshea


كنت في الآونة الأخيرة بحاجة إلى القيام بشيء مماثل ولكن باستخدام symlink بدلا من ذلك. لإنشاء رابط رمزي والحفاظ على الطابع الزمني الأصلي: cp -ps src_file dst_symlink


1
2017-07-21 16:57