Tar tập tin với ngày như tên?


16

Tôi đang cố gắng tar và gzip một tập tin với ngày và thời gian như tên:

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

Nhưng tôi nhận lại:

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

Chính xác những gì đang xảy ra ở đây và làm thế nào tôi có thể sửa chữa?

Có phải tar đang cố gắng kết nối với tên như thể đó là một ip?


7
Các tiêu chuẩn ISO cho những ngày là yyyy-mm-ddThh: mm: ss, hoặc +%FT%Ttrong date's cú pháp. Ngoài việc đưa ra ngày ở một định dạng rõ ràng, nó sắp xếp độc đáo!

@drewbenn với ngày GNU, cũng: date --iso-8601=s(nhưng nó cũng thêm phần bù múi giờ)
muru

2
Tôi sẽ không khuyến khích sử dụng dấu hai chấm. Một cái gì đó giống 20170818_122314hoặc tương tự là đủ dễ dàng để nhận ra và / hoặc phân tích cú pháp. Colons gây rắc rối trong các tình huống khác nhau (bạn chỉ cần phát hiện ra một).
Rolf

Câu trả lời:


31

Vâng, đúng vậy. Ít nhất là cho GNU tar, tài liệu nói:

Nếu tên tệp lưu trữ bao gồm dấu hai chấm ( :), thì nó được coi là một tệp trên máy khác. Nếu tệp lưu trữ là user@host:file, thì tệp được sử dụng trên máy chủ lưu trữ . Máy chủ từ xa được truy cập bằng chương trình rsh, với tên người dùng . Nếu tên người dùng bị bỏ qua (cùng với @dấu hiệu), thì tên người dùng của bạn sẽ được sử dụng. (Đây là hành vi rsh bình thường.).

Nó cũng cung cấp một cách giải quyết:

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

5
Cách giải quyết ngắn hơn: tar zcf ./"$date".tar.gz ...Đặc tả đường dẫn hàng đầu dường như làm cho tar coi nó như một tệp thông thường
muru
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.