thư mục tar cũ hơn từ tuần trước


0

Tôi đang cố gắng tạo một tập lệnh cần lưu trữ nhật ký văn bản từ tuần trước.

Về cơ bản chúng ta có một đường dẫn nơi chúng ta có các thư mục theo ngày như sau, Mỗi thư mục chứa các tệp csv chứa dữ liệu cho ngày đó

2015-02-01
2015-02-02
2015-02-03
2015-02-04
2015-02-05

Chúng tôi muốn chạy một tập lệnh chạy mọi chủ nhật và lưu trữ tất cả các thư mục và tệp trong một kho lưu trữ cho tất cả các thư mục tuần trước.

Bất cứ ý tưởng làm thế nào tôi có thể đạt được điều đó?

Tôi đang sử dụng lệnh này như một thử nghiệm sẽ lưu trữ tất cả các thư mục cũ hơn 5 ngày nhưng nó chỉ nén một thư mục

find . -type d -mtime +5 -print -exec tar -zvcf test.tar.gz {} \;

Câu trả lời:


0

Nếu bạn đang chạy tập lệnh đó vào một ngày cụ thể và nếu bạn có quyền truy cập vào ngày GNU và GNU tar (tức là Linux), bạn có thể sử dụng một cái gì đó như thế này (tôi cho rằng bạn đang sử dụng bash, không được thử nghiệm trên các shell khác):

for i in {1..7}; do
    FOLDER=`date +%Y-%m-%d -d "$i days ago"`
    tar zcfv /var/tmp/${FOLDER}.tgz ${FOLDER}/
done

Ngày GNU rất quan trọng vì nó hiểu thông số -d "N ngày trước".

Vì tên thư mục của bạn có thể dự đoán được, nên điều này cũng thường nhanh hơn tìm thấy

/ Chỉnh sửa: nếu bạn cần một kho lưu trữ cho cả tuần, chỉ cần thêm vào các nguồn tar.

WEEK=`date +%U`
SOURCE=""
for i in {1..7}; do
    FOLDER=`date +%Y-%m-%d -d "$i days ago"`
    SOURCE=${SOURCE}" "${FOLDER}/
done
tar zcfv /var/tmp/week${WEEK}.tgz ${SOURCE}

Đầu ra của bản kiểm tra của tôi (tính đến hôm nay):

tar zcfv /var/tmp/week07.tgz 2015-02-17/ 2015-02-16/ 2015-02-15/ 2015-02-14/ 2015-02-13/ 2015-02-12/ 2015-02-11/

Phụ thuộc vào workdir hiện tại ($ PWD) của tập lệnh của bạn. Ví dụ: Tất cả các thư mục con của bạn nằm trong / d01 và bạn cần có đầu ra trong / opt / result. Vì vậy, chỉ cần thêm SRCDIR = "/ d01 /" và DSTDIR = "/ opt / result /" vào tập lệnh và sử dụng SOURCE = $ {SOURCE} "" $ {SRCDIR} $ {FOLDER} và tar zcfv $ {DSTDIR} dòng $ {TUẦN} $ {NGUỒN}.
Axel Engeland

Tôi muốn làm cho kịch bản chung chung để nó chọn tất cả các thư mục được sửa đổi trong tuần trước. Không cần thiết rằng tên thư mục sẽ có định dạng đó. cũng để xóa các thư mục sau khi tar đã được thực hiện
Junaid388

Cho rằng bạn chỉ cần kiểm tra nội dung của nguồn, không phải chính nguồn đó. Bản thân nguồn được sửa đổi với mỗi lần tạo thư mục mới. Thay vì "find. -Ttype d -mtime -7" (đó là -7 bằng cách này) sử dụng "find / d01 / * -type d -mtime -7", điều đó sẽ tìm thấy những gì bạn muốn.
Axel Engeland
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.