সতর্কতা: বিশেষ কাজের ব্যতীত, জিএনইউ cp --attributes-only
গন্তব্য ফাইলগুলি কমপক্ষে নির্ভুলভাবে কাটাবে। নীচে সম্পাদনা দেখুন।
মূল:
এই পরিস্থিতিতে আপনি সম্ভবত জিএনইউ সিপি-র --attributes-only
বিকল্প চান, --archive
এটি চেষ্টা ও পরীক্ষিত কোড হিসাবে , একসাথে সমস্ত ফাইল-সিস্টেম-অজ্ঞানতিক বৈশিষ্ট্যগুলি করে এবং সিমলিংকগুলি অনুসরণ করে না (সেগুলি অনুসরণ করা খারাপ হতে পারে!):
cp --archive --attributes-only /source/of/failed/backup/. /destination/
ফাইল হিসাবে, cp
বর্ধিত বৈশিষ্ট্যাবলী সঙ্গে যুত: যদি উভয় উত্স এবং গন্তব্য বর্ধিত বৈশিষ্ট্যাবলী আছে এটা যোগ উৎস এর বর্ধিত বৈশিষ্ট্যাবলী গন্তব্যে (বরং গন্তব্য এর xattrs সব প্রথম মোছার চেয়ে)। cp
আপনি যদি একটি বিদ্যমান গাছের মধ্যে ফাইলগুলি অনুলিপি করেন তবে এটি কীভাবে আচরণ করে তা মিরর করে rors
এছাড়াও মনে রাখবেন যে আপনি যদি প্রথমবারের মতো হার্ড লিঙ্কগুলি সংরক্ষণ না করে rsync
তবে এখনই সংরক্ষণ করতে চান তবে আপনার পক্ষে এটি ঠিক করা cp
হবে না ; আপনি সম্ভবত rsync
সঠিক বিকল্পগুলি (আমার অন্য উত্তর দেখুন ) এবং ধৈর্যশীল হয়ে পুনরায় কাজ করা সেরা।
আপনি যদি ইচ্ছাকৃতভাবে পৃথক এবং মেটাডেটা / ফাইল সামগ্রীগুলি পুনরায় সমন্বিত করতে গিয়ে এই প্রশ্নটি খুঁজে পেয়ে থাকেন তবে আপনি উবুন্টু সংগ্রহস্থলে থাকা মেটাস্টোরটি একবার দেখে নিতে পারেন ।
উত্স: জিএনইউ কোর্টিল ম্যানুয়াল
যুক্ত করতে সম্পাদিত:
cp
GNU 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);
}