Tôi đã làm một: tar -cvf
và tôi đã phải giết nó với ctrl-C
. Tôi biết tôi nên đã thực hiện một Ctrl-Z
và sau đó đưa nhiệm vụ trở lại tiền cảnh ... nhưng đó không phải là câu chuyện.
Tôi có thể tiếp tục từ điểm tôi đã dừng nhiệm vụ không?
Tôi đã làm một: tar -cvf
và tôi đã phải giết nó với ctrl-C
. Tôi biết tôi nên đã thực hiện một Ctrl-Z
và sau đó đưa nhiệm vụ trở lại tiền cảnh ... nhưng đó không phải là câu chuyện.
Tôi có thể tiếp tục từ điểm tôi đã dừng nhiệm vụ không?
Câu trả lời:
Phương pháp này sẽ tạo lại kho lưu trữ tar của bạn và nối phần hoàn thành vào tệp hiện có. Điều này có thể hữu ích nếu sao lưu qua kết nối mạng. Bạn có thể sẽ dẫn đến một kho lưu trữ bị hỏng nếu bất kỳ dữ liệu nào trong INFILES của bạn đã thay đổi. Hãy chắc chắn để kiểm tra kho lưu trữ của bạn sau khi hoàn thành.
Thay đổi INFILES và OUTFILE thành tên chính xác trên dòng sau.
INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"
Giải trình:
SIZE="$(wc -c < $OUTFILE)"
# Lấy kích thước hiện tại của kho lưu trữ.
tar -cz --to-stdout "$INFILES" |
# Bắt đầu tạo lưu trữ và gửi đầu ra cho tail
lệnh.
tail -c +$(($SIZE+1)) >>
# Bỏ qua dữ liệu trước $ SIZE + 1 và tiếp tục phần còn lại của kho lưu trữ $ OUTFILE.
Giải pháp tốt nhất là xóa tệp tar và khởi động lại quá trình được chuẩn bị trước nohup
và nối thêm &
. Ngoài ra, bạn có thể chạy tar -tfv
và sử dụng như là một loại trừ cho cái mới tar -cvf
.
tar -cvf
sẽ ghi đè lên tập tin hiện có. Ý bạn là tar -rvf
sao Ngoài ra, tập tin cuối cùng được ghi vào kho lưu trữ có thể không đầy đủ.
tar -rvf
?
Những gì tôi làm trong trường hợp, rằng tôi có một tar
kho lưu trữ không đầy đủ , tôi tạo một danh sách các tệp trong kho lưu trữ:
tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done
Các sed
lệnh xóa tất cả những dòng này, có một dấu gạch chéo: Đây là những thư mục, không phải tập tin, và chúng tôi muốn để đổ các thư mục một lần nữa và chỉ bỏ qua các tập tin trong thư mục đó, mà chúng ta có đã có trong các kho lưu trữ tar đầu tiên. Hơn nữa, chúng tôi cho phép sed
xóa tên tệp cuối cùng, vì rất có thể nó đã bị đổ chỉ một phần, vì vậy chúng tôi sẽ lưu trữ lại.
Sau đó, chỉ cần chuyển files-done
danh sách qua tùy chọn -X sang một tar
lệnh mới :
tar cfvX archive2.tar files-done SOURCEDIR
Đảm bảo sử dụng tên tệp đầu ra khác trên lệnh tar mới, nếu không bạn sẽ ghi đè lên kho lưu trữ một phần của mình. Đừng cố gắn trực tiếp vào kho lưu trữ tar bị hỏng.