Đây là tập lệnh mà tôi đã viết để xóa bất kỳ tệp nào trên một trang web ftp từ xa cũ hơn 7 ngày. Nó hoạt động bằng cách lấy danh sách thư mục, phân tích cú pháp ngày sửa đổi và sau đó kết nối lại để xóa bất kỳ tệp nào cũ hơn ngày thứ hai.
Tôi nghi ngờ rằng các số được mã hóa cứng vào vòng lặp (ngày phần tử) có thể thay đổi tùy thuộc vào thiết lập hệ thống của bạn. Định dạng trả về của lệnh ls phụ thuộc vào các thiết lập hệ thống cục bộ.
Giả sử các bản sao lưu của bạn là hàng ngày, sau đó, thiết lập các ngày từ 10 đến 10 có thể giải quyết được sự cố của bạn.
#!/bin/bash
# get a list of files and dates from ftp and remove files older than ndays
ftpsite="ftp.yourserver.com"
ftpuser="loginusername"
ftppass="password"
putdir="/public_ftp/admin/logs"
ndays=7
# work out our cutoff date
MM=`date --date="$ndays days ago" +%b`
DD=`date --date="$ndays days ago" +%d`
echo removing files older than $MM $DD
# get directory listing from remote source
listing=`ftp -i -n $ftpsite <<EOMYF
user $ftpuser $ftppass
binary
cd $putdir
ls
quit
EOMYF
`
lista=($listing)
# loop over our files
for ((FNO=0; FNO<${#lista[@]}; FNO+=9));do
# month (element 5), day (element 6) and filename (element 8)
#echo Date ${lista[`expr $FNO+5`]} ${lista[`expr $FNO+6`]} File: ${lista[`expr $FNO+8`]}
# check the date stamp
if [ ${lista[`expr $FNO+5`]}=$MM ];
then
if [[ ${lista[`expr $FNO+6`]} -lt $DD ]];
then
# Remove this file
echo "Removing ${lista[`expr $FNO+8`]}"
ftp -i -n $ftpsite <<EOMYF2
user $ftpuser $ftppass
binary
cd $putdir
delete ${lista[`expr $FNO+8`]}
quit
EOMYF2
fi
fi
done
Rất đẹp! Nhưng tại sao bạn ngắt kết nối và kết nối lại giữa các tệp? Để kết nối mở. – dotancohen
Cảm ơn kịch bản tuyệt vời :) nhưng tôi có lỗi "giá trị quá lớn đối với cơ sở (mã thông báo lỗi là" 08 ")" khi $ DD là 0x, nó được hiểu là x trong bát phân (vấn đề 8 và 9) – jsan
'xóa tệp cũ hơn hơn 6 tháng 7 Cố ngày ftp 12.672.814 file: 7 ngày ftp 12.672.913 file: 1 ngày ftp 12.672.889 file: 7 ngày ftp 1099121178 file: 7 ngày ftp 1099121165 file: 1 ngày ftp 1099121206 file: 7 ngày tập tin : Xóa Đang thử 62.210.17.5 ... (tệp từ xa) Không thể xóa thoát: Không có tệp hoặc thư mục như vậy' – Ghayel