Đang chạy find exec exec tar czvf chỉ lưu trữ một tập tin.


1

Khi cố chạy

find . -iname "*.gz" -mtime +7 -exec tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz {} \;

Tôi nhận được danh sách các tập tin

./corosync.log-20140620.gz
./corosync.log-20140618.gz
./rgmanager.log-20140620.gz
./fenced.log-20140620.gz
./rgmanager.log-20140618.gz
./qdiskd.log-20140618.gz

Nhưng kho lưu trữ chỉ nhận được mục cuối cùng

 tar -tvf all_gizip_$(date +%Y-%m-%d).tar.gz
-rw-r--r-- root/root       506 2014-06-18 03:21 ./qdiskd.log-20140618.gz

Tôi đang làm gì sai?


Có vẻ như việc tìm kiếm bị giới hạn trong 7 ngày qua, các tệp có đáp ứng tiêu chí đó không?
Tyson

Có Tyson. Nhật ký xoay tạo ra .gz để bắt đầu. Tôi cần chạy thứ hai trong cron để lấy tất cả các gz và đặt chúng vào một gz duy nhất và sau đó chuyển chúng sang lưu trữ. jjlin đã cho tôi sự điều chỉnh cho bản gốc của tôi.
Stryker CainII

Câu trả lời:


0

Lệnh của bạn đang chạy tarmột lần cho mỗi tệp và mỗi lệnh gọi để tartạo đầu ra cùng tên, do đó ghi đè đầu ra trước đó. Vì vậy, bạn kết thúc với chỉ các tập tin cuối cùng. Bạn cần một cái gì đó như

find . -iname "*.gz" -mtime +7 | xargs tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz

Điều này sẽ hoạt động tốt miễn là danh sách các tệp của bạn không lớn. Nếu đúng như vậy, thì có lẽ bạn sẽ muốn chuyển sang sử dụng tar rvfvà thực hiện một gzipbước riêng biệt ở cuối.

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.