টার: সদস্যের নাম থেকে নেতৃস্থানীয় `/ 'সরানো


137
root@server # tar fcz bkup.tar.gz /home/foo/
tar: Removing leading `/' from member names

আমি কীভাবে এই সমস্যাটি সমাধান করতে পারি এবং /ফাইলের নাম রাখি ?


2
প্রত্যাশার মতো ঠিক কী কাজ করছে না?

34
এইটা সমস্যা না. আপনি একটি টার সংরক্ষণাগারে শীর্ষস্থানীয় স্ল্যাশ চান না । সিরিয়াসলি। আপনি যদি আপনার সিস্টেমের মূলটিতে একটি সংরক্ষণাগার বের করতে চান তবে এটি বের করার -C /সময় নির্দিষ্ট করুন ।
চোরমাস্টার

উত্তর:


69

এই বৈশিষ্ট্যটি অক্ষম করতে বিকল্প --absolute-namesবা -Pবিকল্পটি ব্যবহার করুন ।

tar fczP bkup.tar.gz /home/foo/

tar fcz bkup.tar.gz --absolute-names /home/foo

54
এটি সঠিক উত্তর, তবে সচেতন থাকুন, বেশিরভাগ ক্ষেত্রে, আপনি যা চান তা এটি নয় , এর ফলে এটি একটি সংরক্ষণাগার তৈরি করে যা সম্পূর্ণ পথে বের করে!
rubo77

8
-C /@ মার্কাসের উত্তরে বর্ণিত বিকল্পটি ব্যবহার করা এসটিডিইআরআর বার্তাটি যদি আপনার প্রাথমিক লক্ষ্য হয় তবে তা ছাড়িয়ে দেবে।
ম্যাট স্যান্ডার্স

1
@ রুবু 77 মন্তব্য হিসাবে, সাধারণত এটি আদেশের প্রত্যাশিত ফলাফল নয়।
আলফ্রেডকম্বের

3
বেশিরভাগ সময় এটি ব্যবহারকারী চায় না, কেবল কারণ তাদের বেশিরভাগ ম্যানুয়ালটি পড়েন না যতক্ষণ না তারা প্রয়োজন (যে কেউ এর জন্য সময় পান না)। সুতরাং, কমপক্ষে আপনার উত্তরটি প্রসারিত করা বুদ্ধিমানের কাজ হবে, যদি না লোকেরা নিশ্চিত না হয় যে তারা এর প্রভাব কী তা বুঝতে না পারে তবে তারা এটি না করার জন্য সতর্ক করে দেবে। বিশেষত একটি উত্তর হিসাবে গ্রহণ করা হচ্ছে।
ম্লাদেন বি।

1
@ তোসকান উদাহরণ যুক্ত
বারমার

89

এটি আসলে একটি বৈশিষ্ট্য, কোনও সমস্যা নয়। নিরঙ্কুশ অবস্থানের সংরক্ষণাগারগুলি সুরক্ষা ঝুঁকি। আক্রমণকারীরা সমালোচনা সিস্টেমের অবস্থানগুলিতে ব্যবহারকারীদের ফাইল ইনস্টল করতে প্রতারিত করতে এই জাতীয় সংরক্ষণাগারগুলি ব্যবহার করতে পারে।

হ্যাঁ, আপনি ব্যবহার করতে পারেন -P। তবে কীভাবে টারকে ফরোয়ার্ড স্ল্যাশ সরিয়ে দেওয়ার অনুমতি দেওয়া হয়েছে এবং আর্কাইভের ব্যবহারকারীর দ্বারা রুট ডিরেক্টরিতে স্পষ্টভাবে নিষ্কাশন করা প্রয়োজন? তারপরে তারা সচেতনভাবে জটিল সিস্টেমের অবস্থানগুলিকে প্রভাবিত করছে এবং দুর্ঘটনাক্রমে এটি করতে পারে না।


5
কখনও কখনও বৈশিষ্ট্যগুলি সমস্যা হয়। আমি একটি ব্যাকআপ স্ক্রিপ্ট সেট আপ করার পরে এই থ্রেডটি পেয়েছি যা কোনও শূন্য-বহির্গমন স্থিতিতে ইমেল করবে tar। এই নির্দিষ্ট বার্তাটি tarএকটি স্থিতি সহ প্রস্থান 1করছিল, যা আমাকে সফল ব্যাকআপগুলিতে মিথ্যা ইমেল সতর্কতাগুলি গ্রহণ করার কারণ tarহয়েছিল , কেবল এই কারণেই এসটিডিআরআরে এই বার্তাটি লিখছিল। আমি @ মারকাসের সমাধানটির নিজের cd /path/to/network/share && tar -cJf scripts.backup.tar.xz -C / home/user/scripts 2>/dev/null || [send an email alert]
টুইঙ্ক

1
আমি মনে করি ব্যবহারের জন্য কিছু ব্যবহারের কেস রয়েছে -P- উদাহরণস্বরূপ, যদি আপনি FUSE- তে কোনও ধরণের ফাইল সিস্টেম স্ন্যাপশ্যাটিং বৈশিষ্ট্য সরবরাহ করে থাকেন। কিছু সময় আপনি cwdব্যবহারকারীর দৃষ্টিকোণ থেকে সুনির্দিষ্ট ডিরেক্টরিতে স্ন্যাপশটটি সন্ধান করতে পারেন ।
DIMMSum

81

আপনি যদি এসটিডিআরআরে মুদ্রিত "সদস্যের নাম থেকে নেতৃস্থানীয় /` / 'মুছে ফেলা "থেকে মুক্তি পেতে চান তবে তবুও সেই নেতৃস্থানীয় স্ল্যাশগুলি বুদ্ধিমানের সাথে ডিফল্ট অনুসারে ছেড়ে দিতে চান, আমি এখানে একটি চমত্কার সমাধান কমেন্টার টাইমসফ্ট দ্বারা দেখেছি।

সমাধানটিতে ডিরেক্টরিটি রুট (/) এ পরিবর্তনের জন্য -C বিকল্প ব্যবহার করা হয়, তারপরে ফাইল ট্রিটিকে একটি শীর্ষস্থানীয় স্ল্যাশ ছাড়াই সংরক্ষণাগারভুক্ত করে নির্দিষ্ট করা উচিত কারণ এখন আপনার কেবল একটি আপেক্ষিক পথ প্রয়োজন। এটি একটি সাধারণ টার কমান্ড কমান্ডের মতো একই কাজ করে তবে কোনও স্ট্রিপিংয়ের প্রয়োজন নেই:

tar fcz bkup.tar.gz -C / home/foo/

এটি ইনক্রিমেন্টাল ব্যাকআপ নিয়ে কাজ করবে না। তবে একটি ভাল উত্তর।
গজদীপজতি

শেল-এক্সপেনশন (উদাহরণস্বরূপ tar c -C / home/foo/*) দ্বারা চিহ্নিত ফাইলগুলি টার করতে চাইলে এটিও কাজ করে না , কারণ শেলটি পরিবর্তিত মূল সম্পর্কে জানতে পারে না। তবে এখনও অন্যান্য ক্ষেত্রে একটি ভাল উত্তর।
বরিস

1
-C /আমার জন্য কাজ করে না, পিরিয়ড। এটি আমার জন্য স্টাডারকে প্রতিরোধ করে না।
একিউম্যানাস

3
@ এ বি বি নিশ্চিত করুন যে পথটি অনুসরণ করে -সি / আপেক্ষিক।
জুরফেক্স

কোনও ব্যবহারকারীর রুট ডিরেক্টরিতে অনুমতি না থাকলে এই পদ্ধতির কাজ হবে?
ম্লাদেন বি।

31

এক মাস দেরি হয়ে গেছে, তবে আমি আমার মামলার সর্বাধিক উপযুক্ত সমাধান খুঁজে পেয়েছি (শেল স্ক্রিপ্টে) প্যারেন্ট ডিরেক্টরিতে গিয়ে সেখানে কমান্ড চালানো।

cd /var/www/
tar -czf mysite.gz mysite

পরিবর্তে:

tar -czf /var/www/mysite.gz /var/www/mysite

9
প্রকৃতপক্ষে আপনি এটি ব্যবহার করে এটি করতে পারতেন: টার -zcvf mysite.gz -C / var / www / mysite / এর সুবিধা হ'ল আপনি যে কোনও ডিরেক্টরি থেকে এটি সম্পাদন করতে পারেন
alfredocambera

আপনার সাহায্যের জন্য ধন্যবাদ। এই আমার প্রয়োজন ছিল। আমি আমার টারবলে পুরো পথটি চাইনি, কেবল গন্তব্য ফোল্ডার।
ক্রিস্টিয়া

এটি সম্ভবত একটি সঠিক উত্তর হিসাবে গ্রহণ করা উচিত ছিল, আমি মনে করি।
ম্লাদেন বি।

আমি দেখতে পাচ্ছি না কীভাবে এটি প্রশ্নের উত্তর দেয় না। এটি কিছু ভিন্ন যা করা যায়। …… ... যেমন: প্রশ্ন: লস অ্যাঞ্জেলেস থেকে নিউ ইয়র্কে কীভাবে যাব? উত্তর: পরিবর্তে সান ফ্রান্সিসকো যান।
জি ম্যান

আমি @ জি-ম্যানের সাথে একমত এটি সম্পূর্ণ আলাদা ডিরেক্টরি কাঠামোযুক্ত একটি ট্যারি ফাইলের ফলস্বরূপ। কিছু ক্ষেত্রে, সেই ডিরেক্টরি কাঠামোটি প্রথম স্থানে আরও উপযুক্ত তবে এটি প্রশ্নের উত্তর দেয় না।
কেভিন কেইন

7

ব্রুট ফোর্স পদ্ধতিটি ব্যবহার করে আমি এটি এটি করেছি 2>&1 | grep -v "Removing leading"

উদাহরণ স্বরূপ:

tar -cf "$BKUPDIR/${BKUPFILE}.tar" --overwrite --exclude '.*' --one-file-system "$SRCDIR" 2>&1 | grep -v  "Removing leading"

4
এটির সাথে সমস্যা হ'ল এটি ত্রুটি কোডটি লুকায়। সুতরাং আপনি যদি কোনও বাশ স্ক্রিপ্টে টার থেকে ত্রুটি কোডটি পরীক্ষা করতে চান, তবে এটি সাফল্যে 0 ফিরে আসবে না।
ব্রায়ান

@ স্ট্যাটিক্স, ত্রুটি কোড 0 নির্বিশেষে is
একিউম্যানাস

1
@ এ বি বি আমার tarকমান্ড 2মারাত্মক ত্রুটিতে ফিরে আসতে পারে ।
জিট

1
ব্রায়ান আপনি প্রস্থান কোড পেতে $ পাইপস্ট্যাটাস ব্যবহার করতে পারেন। Unix.stackex
بدل.

3

-Cকেবলমাত্র এমন পাথের জন্য ব্যবহার করার চেষ্টা করুন যা সম্পূর্ণ পাথের সাথে সংকোচন করা রোধ করে:

root@server # tar fcz bkup.tar.gz -C /home/ foo/

2

আমি এই সমস্যাটি এর সাথে সমাধান করেছি:

cd /home/foo && tar czf ~/backup.tar.gz .

আপনি প্রথম স্থানে টার সংরক্ষণাগারটিতে পরম পাথগুলি রাখার চেষ্টা করছেন না। আপনি যদি ফাইল সিস্টেমের মূলে এটি অনাড় করতে চান তবে আপনি ঠিক

cd / && tar xzf backupt.tar.gz এটি স্থানান্তর করার পরে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.