คำถามติดแท็ก tar

รูปแบบไฟล์เก็บถาวร tar และ / หรือยูทิลิตี้บรรทัดคำสั่งสำหรับการทำงานกับไฟล์ tar

2
tarballs นิรนาม
Tar เข้ารหัสชื่อผู้ใช้ของฉันใน tarball ฉันสามารถบังคับให้สร้าง tarball แบบไม่ระบุชื่อได้หรือไม่ --owner rootแทนที่บางส่วนของชื่อผู้ใช้ของฉัน การเพิ่มUSER=root: USER=root tar c --owner root dataไม่มีผลใด ๆ ในระยะสั้นฉันต้องการ: echo hello world > data; tar c --owner root data | grep "$USER" เพื่อไม่ให้ตรงกัน
11 tar  gnu-tar 

4
ฉันจะเรียกคืนคำสั่ง tar ต่อไปซึ่งถูกฆ่าได้อย่างไร
ผมทำ: และผมต้องฆ่ามันด้วยtar -cvf ctrl-Cฉันรู้ว่าฉันควรจะทำCtrl-Zแล้วนำกลับมาทำงานเบื้องหน้า ... แต่มันไม่ใช่เรื่อง ฉันสามารถดำเนินการต่อจากจุดที่ฉันหยุดงานได้หรือไม่
11 tar 

1
ฉันจะรวมไฟล์บีบอัดหลายไฟล์ไว้ในที่เก็บถาวรได้อย่างไร
ฉันมี.tar.xzไฟล์สองสามร้อยไฟล์ซึ่งเกือบจะเหมือนกัน (เป็นไฟล์ทิ้งทุกวันและฐานข้อมูลเปลี่ยนแปลงช้า) ฉันเชื่อว่าเนื่องจากความคล้ายคลึงกันในไฟล์ที่ไม่มีการบีบอัดไฟล์เหล่านั้นจะบีบอัดได้ดีมากและการทดสอบขนาดเล็กได้แสดงให้เห็นว่าการบีบอัดไฟล์ที่ไม่มีการบีบอัดจำนวนเท่าใดก็ได้สร้างไฟล์เก็บถาวรที่มีขนาดใหญ่กว่าหนึ่งไฟล์ ปัญหาของฉันคือไฟล์ที่ไม่มีการบีบอัดทั้งหมดจะมีขนาดเทราไบต์ไม่กี่ตัว (อัตราส่วนการบีบอัดประมาณ 25: 1) และฉันไม่มีพื้นที่ดิสก์มากพอที่จะใช้เป็นพื้นที่ทำงาน มีวิธีที่ฉันสามารถประมวลผลไฟล์บีบอัดทีละไฟล์เพิ่มไฟล์ลงในไฟล์เก็บถาวรไฟล์เดียวและยังคงรักษาประโยชน์ของการบีบอัดไฟล์ไว้ด้วยกันได้หรือไม่?
10 tar  compression 

1
แปลงพา ธ ของไฟล์เก็บถาวร tar โดยไม่แตกไฟล์
GNU มีตัวเลือกเรียบร้อยเรียกว่าtar(1) --transformจากหน้าคน: --transform, --xform EXPRESSION ใช้ sed แทนที่ EXPRESSION เพื่อเปลี่ยนชื่อไฟล์ สิ่งนี้ช่วยให้การแปลงชื่อพา ธ ได้อย่างรวดเร็วเนื่องจากมีการแยกไฟล์เก็บถาวรเพื่อให้คุณสามารถควบคุมตำแหน่งและวิธีที่จะแตกไฟล์ได้ คำถามของฉันคือมีวิธีที่จะทำการเปลี่ยนแปลงที่คล้ายกันในแหล่งกำเนิด ; เช่นโดยไม่ต้องแยกเก็บถาวร? ตัวอย่าง [user@host]$ tar tf test.tar ./foo/blah ./foo/bleh [user@host]$ some_deep_magic 's/foo/bar/' test.tar [user@host]$ tar tf test.tar ./bar/blah ./bar/bleh ใช้กรณี ฉันแจกจ่ายtarไฟล์เก็บถาวรให้กับผู้ใช้ทั่วไปที่ไม่มีส่วนร่วมและต้องการให้มันแยกไปยังเส้นทางที่ถูกต้องโดยไม่มีการรบกวนจากฉัน ฉันกำลังพยายามหลีกเลี่ยงวิธีแก้ปัญหาเล็กน้อยในการแยกไฟล์เก็บถาวรเปลี่ยนชื่อไดเรกทอรีและบรรจุใหม่เนื่องจากไฟล์เก็บถาวรมีขนาดใหญ่
10 tar 

2
tar ไฟล์จากไดเรกทอรีอื่นโดยไม่คัดลอก
นี่ควรจะง่ายมากสำหรับผู้เชี่ยวชาญที่นี่ ฉันมีบัญชี Linux พร้อมโควต้าดิสก์ผู้ใช้เพียง 6GB มีโฟลเดอร์ข้อมูลบางส่วนที่มีข้อมูล/optประมาณ 3GB เมื่อบีบอัดขึ้นมา 1GB data-folderมีบางอย่างที่เชื่อมโยงสัญลักษณ์อยู่ภายใน โดยปกติแล้วสำหรับการสำรองข้อมูลการทำงานฉันใช้ในการทำดังต่อไปนี้ cp -rvfL /opt/data-folder ~/ cd ~/ tar -zcvf data-folder.tar.gz data-folder rm -rvf data-folder ตอนนี้ผมมีการบริโภคอยู่แล้ว 2.5GB ในโควต้าของฉันดิสก์ของผู้ใช้ผมมีพื้นที่พอเพียงที่จะคัดลอกไฟล์ไปที่บ้านของฉัน แต่ไม่ถึงtarมันอีกครั้ง มีวิธีการ tar และคัดลอกโฟลเดอร์ด้วยคำสั่งเดียวพูดโดยใช้ไพพ์ PS ฉันไม่สามารถน้ำมันดินใน/optเพราะฉันมีเพียง /optแต่การเข้าถึงการอ่านเพื่อ
10 files  tar  cp 


5
“ tar: ตัวเลือกที่ไม่รู้จัก - คำเตือน” ระหว่าง 'apt-get install'
ฉันเพิ่งวิ่งapt-get upgradeบนเดเบียน 5 vps และฉันได้รับข้อผิดพลาดนี้: tar: ตัวเลือกที่ไม่รู้จัก `--warning = no-timestamp ' ตอนนี้เมื่อฉันพยายามติดตั้งแพ็คเกจอื่น ๆ เช่น: imagemagick ฉันได้รับข้อผิดพลาดเดียวกัน: li197-162:~# apt-get install imagemagick Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: pkg-config comerr-dev libssh2-1-dev libpcre3-dev libdb4.6-dev libsqlite3-dev libmysqlclient15-dev libldap2-dev …
10 debian  upgrade  apt  tar 

2
sudo tar การเปลี่ยนแปลงการแตกไฟล์เป็นเจ้าของให้ผู้ใช้
ฉันใช้คำสั่งนี้: $ sudo tar xvzf nexus-latest-bundle.tar.gz ไฟล์ที่แตกออกมานั้นเป็นของผู้ใช้ที่ไม่รู้จัก (1001): drwxr-xr-x 8 1001 1001 4096 Dec 16 18:37 nexus-2.12.0-01 drwxr-xr-x 3 1001 1001 4096 Dec 16 18:47 sonatype-work ไม่ควรจะเป็นเจ้าของรากภายใต้การกำหนดค่าปกติหรือไม่ ฉันกำลังทำงานกับการติดตั้ง linux ที่จำลองจาก AWS AMI
10 files  permissions  users  root  tar 

3
ฝากรายการของไฟล์ที่ไม่มีอยู่ทั้งหมด
ฉันใช้คำสั่งจากสคริปต์เช่น tar -c -f ar.tar a b c d โดยที่ b, c และ d อาจไม่มีอยู่และอาจเป็นไดเร็กทอรี โซลูชั่นที่ฉันได้มาด้วยกำลังท่อส่งออกของls -dไปgrepแล้วประกบมันลงไปในtarคำสั่งหรือการเปิด globs @(a|b|c|d)ที่เพิ่มขึ้นสำหรับ มีวิธีที่เหนือกว่าในการทำเช่นนี้? ฉันใช้ Debian Wheezy ซึ่งดูเหมือนจะไม่มี--includeพารามิเตอร์
10 shell  wildcards  tar 

2
แก้ไขความเป็นเจ้าของไฟล์สำหรับไฟล์ที่อยู่ในไฟล์เก็บถาวร tar
ฉันทำงานในฐานะผู้ใช้และฉันต้องการสร้างไฟล์เก็บถาวร tar ซึ่งเมื่อแตกไฟล์ (โดยรูท) จะแตกไฟล์ด้วยการเป็นเจ้าของราก (มิฉะนั้นรูตจะต้องเปลี่ยนความเป็นเจ้าของด้วยตนเองสำหรับแต่ละไฟล์หลังจากไฟล์ถูกแตกแล้ว ไปยังปลายทาง) ฉันได้พบfakerootซึ่งดูเหมือนว่าจะทำอย่างนั้น แต่ฉันไม่สามารถหาไวยากรณ์ที่ฉันต้องใช้เพื่อสร้างที่เก็บถาวรของฉัน ฉันจะสร้างไฟล์เก็บถาวร tar.xz ได้อย่างไรเพื่อให้ไฟล์มีความเป็นเจ้าของรูทเมื่อแตกไฟล์โดยรูท do something with fakeroot ... tar cfpJ foo.tar.xz foo/
10 files  permissions  tar 

2
วิธีทำให้ tar บันทึกไฟล์เก็บถาวรบนเครื่องระยะไกลโดยใช้ sftp หรือ ftp
ฉันต้องการสำรองข้อมูลสำคัญบางอย่างของฉันในเครื่องระยะไกล ขณะนี้ฉันเพิ่งบันทึกลงในเครื่องท้องถิ่นของฉันโดยใช้คำสั่งนี้:tar -cvjf ~/backups/Backup.tar.bz2 ~/importantfiles/* ฉันไม่ต้องการใช้คำสั่งอื่นเพื่อส่งผ่านไปยังเครื่องระยะไกลซึ่งหมายความว่าฉันต้องการเพียงอัปเกรดคำสั่งนี้เพื่อให้สามารถถ่ายโอนข้อมูลไปยังเครื่องระยะไกลได้ สิ่งนี้ได้รับการออกแบบให้อยู่ในสคริปต์ในภายหลังซึ่งถูกเรียกใช้ด้วยตัวเองหมายความว่าการป้อนข้อมูลผู้ใช้ทุกประเภทที่จำเป็นจะทำให้สับสนได้! สิ่งที่ต้องการ tar -cvjf sftp://user:pwassword@host/Backup.tar.bz2 ~/importantfiles/* tar -cvjf ftp://user:pwassword@host/Backup.tar.bz2 ~/importantfiles/* จะสมบูรณ์แบบ! (ไม่มีท่อ (ฯลฯ ) เพียงคำสั่งเดียว!)
10 bash  tar  ftp  remote  sftp 

2
สร้างคำสั่งแบบไดนามิก
ฉันกำลังทำงานกับสคริปต์และฉันต้องสร้างtarคำสั่งแบบไดนามิก ต่อไปนี้เป็นสองตัวอย่างเพื่ออธิบายสิ่งที่ฉันพยายามทำ: #!/bin/bash TAR_ME="/tmp" EXCLUDE=("/tmp/hello hello" "/tmp/systemd*" "/tmp/Temp*") _tar="tar "`printf -- '--exclude="%s" ' "${EXCLUDE[@]}"`" -zcf tmp.tar.gz" echo COMMAND: "${_tar}" ${_tar} "$TAR_ME" echo -e "\n\nNEXT:\n\n" EXCLUDE=("--exclude=/tmp/hello\ hello" "--exclude=/tmp/systemd*" "--exclude=/tmp/Temp*") _tar="tar "`printf -- '%s ' "${EXCLUDE[@]}"`" -zcf test.tar.gz" echo COMMAND: "${_tar}" ${_tar} "$TAR_ME" ฉันต้องการที่จะใช้_tarเป็นคำสั่งฉันสามารถทำให้มันทำงานกับเส้นทางแบบคลาสสิก แต่ฉันต้องการมันเพื่อทำงานกับช่องว่างในชื่อโฟลเดอร์ และทุกครั้งที่ฉันพบข้อผิดพลาดที่มีลักษณะ: COMMAND: tar --exclude="/tmp/hello hello" --exclude="/tmp/systemd*" --exclude="/tmp/Temp*" …

3
tarring ไฟล์สามารถปรับปรุงการบีบอัดได้หรือไม่?
การรวมกลุ่มของไฟล์เข้าด้วยกันสามารถปรับปรุงการบีบอัดด้วยเครื่องมือมาตรฐานเช่น gzip, bzip2, xz ได้หรือไม่? ฉันคิดมานานแล้วว่าเป็นกรณีนี้ แต่ไม่เคยทดสอบเลย หากเรามีไฟล์ขนาด 20Mb เดียวกันซึ่งสุ่มจากไบต์สุ่มรวมกัน 2 ชุดโปรแกรมบีบอัดที่ชาญฉลาดซึ่งรู้ว่าสิ่งนี้สามารถบีบอัดทั้งลูก Tarball ลงจนเกือบ 20Mb ฉันเพิ่งลองการทดลองนี้โดยใช้ gzip, bzip2 และ xz เพื่อบีบอัด 1) ไฟล์สุ่มไบต์, 2) tarball ของไฟล์สองสำเนาและ 3) แมวของไฟล์สองชุด ในทุกกรณีการบีบอัดไม่ได้ลดขนาดไฟล์ สิ่งนี้คาดว่าสำหรับกรณีที่ 1 แต่สำหรับกรณีที่ 2 และ 3 ผลลัพธ์ที่ดีที่สุดคือไฟล์ 40Mb สามารถหดได้เกือบ 20Mb นั่นเป็นความเข้าใจที่ยากสำหรับโปรแกรมบีบอัดที่จะมองเห็นโดยเฉพาะอย่างยิ่งเนื่องจากความซ้ำซ้อนอยู่ไกลดังนั้นฉันไม่คาดหวังผลลัพธ์ที่สมบูรณ์แบบ แต่ฉันยังคงคิดว่าจะมีการบีบอัดบางอย่าง ทดสอบ: dd if=/dev/urandom of=random1.txt bs=1M count=20 cp random1.txt random2.txt …

2
ฉันจะเพิ่มความเร็วการดำเนินงานในไฟล์แบบกระจายด้วย tar, gzip, rsync ได้อย่างไร
ฉันมีไฟล์หร็อมแหร็ม ( du -hรายงาน 3G และdu -h --apparent-sizeรายงาน 100G) จนถึงตอนนี้ดีมาก ตอนนี้เมื่อฉันต้องการบีบอัดไฟล์โดยใช้tarหรือส่งผ่านเครือข่ายที่ใช้rsyncก็จะต้องใช้เวลามากเท่า 3G ดูเหมือนว่าเครื่องมือเหล่านี้อ่านค่าศูนย์ทั้งหมด ฉันคิดว่ารูเหล่านั้นถูกทำเครื่องหมายอย่างใดและเครื่องมือเหล่านี้สามารถข้ามมันได้ มีแนวโน้มว่าจะไม่มีปัญหากับไฟล์ของฉัน? นี่เป็นคุณสมบัติที่ขาดหายไปในtarหรือrsyncไม่ค้นหาไฟล์ที่กระจัดกระจายหรือไม่? ฉันใช้tarพารามิเตอร์--sparseแต่นั่นก็ไม่ได้ทำให้เร็วขึ้น ก็ไม่พารามิเตอร์rsync--sparse มีวิธีใดที่จะเพิ่มความเร็วเครื่องมือเหล่านี้ในไฟล์ที่กระจัดกระจาย?

1
gunzip & tar xf ทำงานภายใต้สถานการณ์ใดบ้าง แต่ tar xzf ล้มเหลว
เพื่อแสดงให้เห็นจุด: ผมได้ดาวน์โหลดห้องสมุด LEDA จากเว็บไซต์ของ บริษัท การใช้ tar -xzf กับมันล้มเหลว: $ tar -xzf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz tar: This does not look like a tar archive tar: Skipping to next header tar: Exiting with failure status due to previous errors อย่างไรก็ตาม gunzip ตามด้วย tar -xf ใช้งานได้ดี: $ gunzip LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz $ tar -xf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar # …
9 tar  gzip 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.