সতর্কতা: বিশেষ কাজের ব্যতীত, জিএনইউ cp --attributes-onlyগন্তব্য ফাইলগুলি কমপক্ষে নির্ভুলভাবে কাটাবে। নীচে সম্পাদনা দেখুন।
মূল:
এই পরিস্থিতিতে আপনি সম্ভবত জিএনইউ সিপি-র --attributes-onlyবিকল্প চান, --archiveএটি চেষ্টা ও পরীক্ষিত কোড হিসাবে , একসাথে সমস্ত ফাইল-সিস্টেম-অজ্ঞানতিক বৈশিষ্ট্যগুলি করে এবং সিমলিংকগুলি অনুসরণ করে না (সেগুলি অনুসরণ করা খারাপ হতে পারে!):
cp --archive --attributes-only /source/of/failed/backup/. /destination/
ফাইল হিসাবে, cpবর্ধিত বৈশিষ্ট্যাবলী সঙ্গে যুত: যদি উভয় উত্স এবং গন্তব্য বর্ধিত বৈশিষ্ট্যাবলী আছে এটা যোগ উৎস এর বর্ধিত বৈশিষ্ট্যাবলী গন্তব্যে (বরং গন্তব্য এর xattrs সব প্রথম মোছার চেয়ে)। cpআপনি যদি একটি বিদ্যমান গাছের মধ্যে ফাইলগুলি অনুলিপি করেন তবে এটি কীভাবে আচরণ করে তা মিরর করে rors
এছাড়াও মনে রাখবেন যে আপনি যদি প্রথমবারের মতো হার্ড লিঙ্কগুলি সংরক্ষণ না করে rsyncতবে এখনই সংরক্ষণ করতে চান তবে আপনার পক্ষে এটি ঠিক করা cp হবে না ; আপনি সম্ভবত rsyncসঠিক বিকল্পগুলি (আমার অন্য উত্তর দেখুন ) এবং ধৈর্যশীল হয়ে পুনরায় কাজ করা সেরা।
আপনি যদি ইচ্ছাকৃতভাবে পৃথক এবং মেটাডেটা / ফাইল সামগ্রীগুলি পুনরায় সমন্বিত করতে গিয়ে এই প্রশ্নটি খুঁজে পেয়ে থাকেন তবে আপনি উবুন্টু সংগ্রহস্থলে থাকা মেটাস্টোরটি একবার দেখে নিতে পারেন ।
উত্স: জিএনইউ কোর্টিল ম্যানুয়াল
যুক্ত করতে সম্পাদিত:
cpGNU coreutils> = 8.17 এবং তার থেকে উপরে বর্ণিত হিসাবে কাজ করবে, তবে কোর্টিলগুলি <= 8.16 ফাইলগুলি তাদের মেটাডেটা পুনরুদ্ধার করার সময় কেটে যাবে। সন্দেহ হলে, cpএই পরিস্থিতিতে ব্যবহার করবেন না ; সঠিক বিকল্পগুলিরrsync সাথে ব্যবহার করুন এবং / অথবা ধৈর্য ধরুন।
আপনি কী করছেন তা পুরোপুরি না বুঝলে আমি এটিকে সুপারিশ করব না, তবে এর আগে GNU cpকে LD_PRELOAD ট্রিক ব্যবহার করে ফাইলগুলি কাটানো থেকে রোধ করা যেতে পারে :
/*
* File: no_trunc.c
* Author: D.J. Capelis with minor changes by Zak Wilcox
*
* Compile:
* gcc -fPIC -c -o no_trunc.o no_trunc.c
* gcc -shared -o no_trunc.so no_trunc.o -ldl
*
* Use:
* LD_PRELOAD="./no_trunc.so" cp --archive --attributes-only <src...> <dest>
*/
#define _GNU_SOURCE
#include <dlfcn.h>
#define _FCNTL_H
#include <bits/fcntl.h>
extern int errorno;
int (*_open)(const char *pathname, int flags, ...);
int (*_open64)(const char *pathname, int flags, ...);
int open(const char *pathname, int flags, mode_t mode) {
_open = (int (*)(const char *pathname, int flags, ...)) dlsym(RTLD_NEXT, "open");
flags &= ~(O_TRUNC);
return _open(pathname, flags, mode);
}
int open64(const char *pathname, int flags, mode_t mode) {
_open64 = (int (*)(const char *pathname, int flags, ...)) dlsym(RTLD_NEXT, "open64");
flags &= ~(O_TRUNC);
return _open64(pathname, flags, mode);
}