সবচেয়ে সহজ উপায় হ'ল পুরো সংরক্ষণাগারটি অনুলিপি করা; আমার ধারণা আপনি এটি করতে চান না কারণ এটি অনেক বড়।
সাধারণ কমান্ড লাইন সরঞ্জামগুলি ( tar
, pax
) কোনও সংরক্ষণাগার সদস্যদের অন্য সংরক্ষণাগারে অনুলিপি করে সমর্থন করে না।
আপনার যদি মালিকানা সংরক্ষণের দরকার না হয় তবে আমি FUSE ফাইল সিস্টেম ব্যবহার করার পরামর্শ দেব । আপনি ব্যবহার করতে পারেন archivemount একটি ফাইল সিস্টেম হিসেবে একটি সংরক্ষণাগার মাউন্ট; উত্স সংরক্ষণাগারটির জন্য এটি করুন, এবং মাউন্ট করা ফাইল সিস্টেমে ট্যারি চালান।
archivemount some.tar.gz mnt
cd mnt
tar -cz subdir | ssh example.com tar -xz
fusermount -u mnt
বিকল্পভাবে, আপনি এভিএফএস ব্যবহার করতে পারেন :
mountavfs
cd ~/.avfs$PWD/some.tar.gz\#
tar -cz subdir | ssh example.com tar -xz
বিকল্পভাবে, আপনি tar
মূল সংরক্ষণাগারটিতে চালনা করতে পারেন এবং এসএসএইচএফএসের মাধ্যমে রিমোট মেশিনে বের করতে পারেন ।
sshfs example.com: mnt
cd mnt
tar -xf /path/to/some.tar.gz subdir
fusermount -u mnt
তবে আপনার যদি মালিকানা সংরক্ষণের প্রয়োজন হয় তবে এই সমস্ত পদ্ধতিগুলি জটিল are তারা সকলেই স্থানীয় মেশিনে একটি ফাইল বের করতে জড়িত, সুতরাং এই ফাইলটির মালিকানা হ'ল উদ্দেশ্যযুক্ত দূরবর্তী মালিকানা হতে হবে । এটি রুট হিসাবে চলমান প্রয়োজন এবং যদি ফাইলগুলি স্থানীয় মেশিন এবং দূরবর্তী হোস্টের মধ্যে পৃথক পৃথক পৃথক নাম বা আইডি রয়েছে এমন অ্যাকাউন্টগুলির মালিকানাধীন ফলাফলটি না দেয়।
পাইথনের tarfile
লাইব্রেরি টার সদস্যদের কারসাজি করার জন্য মোটামুটি সহজ উপায় সরবরাহ করে, তাই আপনি এগুলিকে এক টর ফাইল থেকে অন্য ট্যুরে পরিবর্তন করতে পারেন। এটি POSIX স্ট্যান্ডার্ড ফর্ম্যাটগুলি (ustar, pax) পাশাপাশি কিছু GNU এক্সটেনশন সমর্থন করে। এখানে একটি অনির্ধারিত পাইথন স্ক্রিপ্ট যা তার স্ট্যান্ডার্ড ইনপুটটিতে একটি টার ফাইল (সম্ভবত gzip বা bzip2 দিয়ে সংকুচিত করা) পড়ে এবং স্ট্যান্ডার্ড আউটপুটে bzip2 দিয়ে সংক্ষেপিত একটি টার ফাইল লেখায়। উত্স থেকে আসা সদস্যরা যদি স্ক্রিপ্টে দেওয়া তর্কটি দিয়ে শুরু করেন তবে তারা অনুলিপি করা হয়।
#!/usr/bin/env python2
import sys, tarfile
source = tarfile.open(fileobj=sys.stdin)
destination = tarfile.open(fileobj=sys.stdout, mode='w:bz2')
for info in source:
if info.name.startswith(sys.argv[1]):
destination.addfile(info)
destination.close()
হিসাবে আহবান করা
tar_filter <some.tar.gz subdir/ | ssh example.com tar -xj
@original.tar
পদ্ধতিটি বিএসডিটারের মাধ্যমে সম্ভব হয়েছিল। পাশাপাশি বর্ধিত বৈশিষ্ট্য এবং সংকোচনের সাথে কাজ করার জন্য মনে হয়,</var/cache/pacman/pkg/libuv-1.7.0-1-x86_64.pkg.tar.xz bsdtar -czf - --include='usr/share/*' @- | tar tvz
(এবং কোনও কারণে একটি খালি নির্বাচন শূন্য বাইটের একটি সিরিজ তৈরি করে, তবে এটি আমার পক্ষে কোনও বড় সমস্যা নয়)।