แยกสมาชิกไม่กี่คนจากไฟล์เก็บถาวร tar และไปป์ผ่านเครือข่าย


9

แก้ไข: ฉันต้องการพิเศษmember01และmember02และไดเรกทอรีblah/

tarball_1.tar.gzมีไดเรกทอรีที่test/มี 20 ไฟล์ ฉันต้องการแยกเฉพาะสมาชิกtest/member01และtest/member02และไดเรกทอรีblah/และคัดลอกไปยัง "remote_host" อื่นโดยใช้ ssh / scp

สิ่งนี้สามารถทำได้ในฐานะหนึ่งซับ? ฉันถือว่าใช้tarแล้วpaxหรือcpioแต่ฉันคิดว่าตัวเองยังไม่ถนัดเรื่องอรรถประโยชน์เหล่านี้

คำตอบ:


15
tar -xzOf file.tar.gz file_you_want_to_extract | ssh user@host 'cat > /path/to/destination_file'
  • -x : สารสกัด
  • -z : ผ่าน gzip
  • -f : ใช้ไฟล์เป็นอินพุต
  • -O : แยกไปยัง stdout

file_you_want_to_extractสกัดจากfile.tar.gzการออกมาตรฐานประปาเข้าไปsshซึ่งจะทำงานในพื้นที่ห่างไกลและเขียนมาตรฐานในระยะไกลcat destination_fileแน่นอนคุณจะต้องแน่ใจว่าคุณมีสิทธิ์เขียนไปยังไฟล์ปลายทางที่คุณต้องการบนโฮสต์ระยะไกล


ฉันไม่ชัดเจนในการโพสต์ดั้งเดิมของฉัน :) ฉันต้องดึงสมาชิกมากกว่าหนึ่งคนรวมทั้งไดเรกทอรี
เฟลิเป้อัลวาเรซ

ควรเป็น tar -xz0f: หลังจากfชื่อหน่วยเก็บถาวรมาแล้ว
Felipe Alvarez

1
การแตกสมาชิกหลายคนจะทำให้เกิดความยุ่งเหยิงหากคุณต้องการให้พวกเขาเป็นหนึ่งใน liners เนื่องจากการดึงหลาย ๆ ไฟล์ไปยัง stdout นั้นไม่สมเหตุสมผล คุณอาจต้องtarคัดแยกแต่ละรายการจากนั้นใช้scp -r member1 member2 blah user@host:/destination/folder/เพื่อคัดลอก หากคุณต้องการทำให้มันเป็นหนึ่งบรรทัดจริงๆคุณสามารถเชื่อมคำสั่งเหล่านั้นทั้งหมดเข้าด้วย&&กัน ตัวเลือกที่ใช้งานได้จริงคือการสร้างสคริปต์และทำซ้ำผ่านตัวเลือกบรรทัดคำสั่งและเรียกใช้งานtarสำหรับแต่ละคนจากนั้นจึงscpจบการทำงานทั้งหมด
atanamir

อ่าฉันเข้าใจแล้ว ดังนั้นจึงไม่มีวิธีการเดียวแบบ "ง่าย" ขอบคุณ :-)
Felipe Alvarez

2
หรือหาก "หนึ่งซับ" สำคัญกว่า "ใช้เวลานานเท่าใด" คุณสามารถไพพ์เก็บถาวรทั้งหมดผ่าน ssh และแยกสมาชิกที่คุณต้องการในด้านอื่น ๆ "cat file.tar.gz | ssh user @ host ' tar zxvf file1 file2 dir1 '
โคลิน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.