File tar dengan tanggal sebagai nama?

16

Saya mencoba membuat tar dan gzip file dengan tanggal dan waktu seperti namanya:

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

Tapi saya kembali:

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

Apa sebenarnya yang terjadi di sini dan bagaimana cara memperbaikinya?

Apakah tar mencoba terhubung ke nama seolah-olah itu adalah ip?

Philip Kirkbride
sumber
7
Standar ISO untuk tanggal adalah yyyy-mm-ddThh: mm: ss, atau +%FT%Tdalam datesintaksis. Selain memberikan tanggal dalam format yang tidak ambigu, itu juga baik!
@drewbenn dengan tanggal GNU, juga: date --iso-8601=s(tetapi juga menambahkan zona waktu)
muru
2
Saya akan mencegah menggunakan titik dua. Sesuatu seperti 20170818_122314atau serupa cukup mudah dikenali dan / atau diurai. Titik dua menyebabkan masalah dalam berbagai situasi (Anda baru menemukannya).
Rolf

Jawaban:

31

Ya itu. Setidaknya untuk GNU tar, dokumentasi mengatakan:

Jika nama file arsip menyertakan titik dua ( :), maka diasumsikan sebagai file di komputer lain. Jika file arsip user@host:file, maka file digunakan pada host host . Host jarak jauh diakses menggunakan program rsh, dengan nama pengguna pengguna . Jika nama pengguna dihilangkan (bersama dengan @tanda), maka nama pengguna Anda akan digunakan. (Ini adalah perilaku normal rsh.).

Ini juga menyediakan solusi:

--force-local
      Archive file is local even if it has a colon.
Steeldriver
sumber
5
Solusi lebih pendek: tar zcf ./"$date".tar.gz ...Spesifikasi jalur utama tampaknya membuat tar memperlakukannya sebagai file biasa
muru