บีบอัดไดเร็กทอรีเต็มด้วย bzip2 ลงในไฟล์ tar ซึ่งชื่อขึ้นอยู่กับวันที่ปัจจุบัน

ฉันกำลังพยายามบีบอัดไดเร็กทอรี แต่ฉันต้องการเปลี่ยนชื่อไฟล์ tar ให้เป็นวันที่ปัจจุบัน ปัญหาคือ tar ไม่ยอมรับ:

#!/bin/bash
tar -cvjSf $(date +%d/%m/%y.%HH:%MM)home_backup.tar.bz2 /home

ฉันต้องการสร้างไฟล์บีบอัดด้วย bzip2 พร้อมวันที่จริง แต่ไม่ยอมรับชื่อ มันจะใช้งานได้ถ้าฉันใช้ชื่อง่ายๆเช่น:

#!/bin/bash
tar -cvjSf home.tar.bz2 /home

person Igor Aguiar    schedule 25.08.2016    source แหล่งที่มา


คำตอบ (1)


อย่าใส่ : หรือ / ในชื่อของไฟล์ tar

พยายาม:

tar -cvjSf "$(date +%d-%m-%y.%HH.%MM)home_backup.tar.bz2" /home

หมายเหตุ:

  1. ใน Unix นั้น / หมายถึงไดเร็กทอรี ส่วนขยายของ $(date +%d/%m/%y.%HH:%MM)home_backup.tar.bz2 จะมี / สองตัว และ tar ต้องการสร้างไฟล์ในไดเรกทอรีย่อยที่ระบุ ในคำสั่งข้างต้น เราได้แทนที่ / ด้วย - และปัญหาก็หมดไป

  2. tar ถือว่าส่วนของชื่อไฟล์ที่อยู่ข้างหน้า : เป็นชื่อของโฮสต์ระยะไกล เนื่องจากคุณไม่ได้พยายามส่งไฟล์ไปยังโฮสต์ระยะไกล จึงควรลบ : ทั้งหมดออกจากคำสั่ง date ที่ใช้ในการสร้างชื่อไฟล์ ในคำสั่งข้างต้น เราได้แทนที่ : ด้วย . และปัญหาก็หมดไป

  3. คำสั่งด้านบนแสดงชื่อของไฟล์ tar ภายในเครื่องหมายคำพูดคู่ ด้วยคำสั่งเฉพาะที่แสดงข้างต้น จึงไม่จำเป็น อย่างไรก็ตาม การใช้เครื่องหมายคำพูดคู่จะป้องกันการแยกคำ และอาจช่วยให้คุณรอดพ้นจากเรื่องไม่คาดคิดอันไม่พึงประสงค์ในอนาคต

person John1024    schedule 25.08.2016