ทาร์ไฟล์ที่มีวันที่เป็นชื่อ?


16

ฉันพยายามที่จะ tar และ gzip ไฟล์ที่มีวันที่และเวลาเป็นชื่อ:

date=$(date '+%d-%m-%Y_%H:%M:%S');    
tar -zcf "$date".tar.gz repo/bin/

แต่ฉันกลับมา:

tar (child): Cannot connect to 17-08-2017_21: resolve failed
tar: Child returned status 128
tar: Error is not recoverable: exiting now

เกิดอะไรขึ้นที่นี่และฉันจะแก้ไขได้อย่างไร

tar พยายามเชื่อมต่อกับชื่อราวกับว่าเป็น IP หรือไม่


7
มาตรฐาน ISO สำหรับวันที่เป็น YYYY-MM-DDThh: mm: ss หรือ+%FT%Tในdate's ไวยากรณ์ นอกเหนือจากการให้วันที่ในรูปแบบที่ไม่คลุมเครือแล้ว

@drewbenn กับวันที่ GNU เช่นกัน: date --iso-8601=s(แต่มันยังเพิ่มการชดเชยเวลา)
muru

2
ฉันจะไม่สนับสนุนการใช้โคลอน สิ่งที่ชอบ20170818_122314หรือคล้ายกันนั้นสามารถจดจำและ / หรือแยกวิเคราะห์ได้ง่ายพอ Colons ทำให้เกิดปัญหาในสถานการณ์ต่าง ๆ (คุณเพิ่งค้นพบ)
Rolf

คำตอบ:


31

ใช่แล้ว. อย่างน้อยสำหรับ GNU tar เอกสารระบุว่า:

หากชื่อไฟล์เก็บถาวรมีโคลอน ( :) จะถือว่าไฟล์นั้นเป็นไฟล์ในเครื่องอื่น หากไฟล์ที่เก็บเป็นuser@host:fileแล้วไฟล์จะถูกใช้บนโฮสต์โฮสต์ ในพื้นที่ห่างไกลสามารถเข้าถึงได้โดยใช้โปรแกรม rsh ด้วยชื่อผู้ใช้ของผู้ใช้ หากไม่ระบุชื่อผู้ใช้ (พร้อม@เครื่องหมาย) ชื่อผู้ใช้ของคุณจะถูกใช้ (นี่เป็นพฤติกรรมปกติของ rsh)

นอกจากนี้ยังมีวิธีแก้ไข:

--force-local
      Archive file is local even if it has a colon.

5
วิธีแก้ปัญหาสั้น: tar zcf ./"$date".tar.gz ...สเปเส้นทางนำดูเหมือนว่าจะทำให้ tar รักษาเป็นไฟล์ปกติ
Muru
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.