Lệnh tar tạo lỗi trong shell script


7

Tôi đang cố gắng tạo một quả bóng tar trong tập lệnh shell (tôi đã bật set -x), nhưng tôi gặp lỗi sau:

+ cd /home5/mysite/public_html
+ TAR_DUMP=gypo_2012-02-18-03:51:15.tar.gz
+ echo 'Tar name: gypo_2012-02-18-03:51:15.tar.gz'
Tar name: gypo_2012-02-18-03:51:15.tar.gz
+ tar -cvzf gypo_2012-02-18-03:51:15.tar.gz gypo
...
tar: gypo_2012-02-18-03\:44\:04.tar.gz: Cannot open: Input/output error
tar: Error is not recoverable: exiting now
...

Kịch bản là:

NOW=$(date +"%Y-%m-%d-%T")

# TAR

cd $HOME/public_html
TAR_DUMP="gypo_$NOW.tar.gz"
echo "Tar name: $TAR_DUMP"
tar -cvzf $TAR_DUMP gypo
# mv -t $DEST $TAR_DUMP

Tại sao tar tạo ra lỗi này và làm thế nào tôi có thể giải quyết nó?

Câu trả lời:


7

Tên :tệp là khó hiểu tar. Ít nhất là đối với coreutilsphiên bản của tar, công --filetắc có thể lấy một đối số có dạng:

hostname:/remote/file/name

Vì vậy, tôi đoán tarlà đang cố gắng diễn giải tên tệp đó theo cách không phải là ý bạn.

Tiền tố tên tệp với ./(hoặc chỉ định một đường dẫn đầy đủ) sẽ giải quyết vấn đề của bạn.

TAR_DUMP="./gypo_$NOW.tar.gz"
echo "Tar name: $TAR_DUMP"
tar -cvzf $TAR_DUMP gypo

Một cách khắc phục khác là thêm công --force-localtắc.

--force-local

Buộc `tar 'diễn giải tên tệp được đặt cho --file dưới dạng tệp cục bộ, ngay cả khi nó trông giống như tên ổ đĩa băng từ xa.


Thêm ./ đã giải quyết vấn đề, cảm ơn rất nhiều !!!
Jérôme Verstrynge
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.