나는이 스크립트를 몇 달 전에 만들었으며, 매일 3 일 이상 된 백업 파일을 찾기 위해 매일 사용 해왔다. 3 일 또는 그 이상 생성 된 모든 파일을 신속하게 식별하는 데 도움이됩니다. 그것은 더 많은 사람이 읽을 수있는 방법으로 파일 몇살에 대한 코멘트와 함께 -l 명령 CLI에 LS의 결과가 표시됩니다디렉토리에있는 모든 파일의 길이를 표시하는 스크립트
#!/bin/bash
#Backup
time=$(date +%d) #Current time in days
a=3 #Number of the past days
b=0 #No need to verify it because it has a backup from today
echo
ls -l | tail -n +2 | while read result;
do
echo $result | awk -vC0='\033[0;0m' -vC1='\033[0;32m' -vC2='\033[0;31m' -vC3='\033[0;33m' \
'{printf "%+10s %+1s %-5s %+4s %+4s %+3s %+2s %5s %-20s \n", $1,$2,$3,$4,$5,$6," " C1 $7 C0," " $8," " $9}'
actual=$(echo $result | awk '{ print $7 }')
partition=$(echo $result | awk '{ print $9 }')
rest=$(($time-$actual))
if [[ $rest -le $a && $rest -ne $b ]]; then
echo -e "\t The Backup for \e[33m$partition\e[0m was done \e[33m$rest\e[0m days ago"
fi
done
. 예를 들어 :
나는 매일이 스크립트는 백업이 더 적은 3 일마다 수행되고 있는지 저를 신속하게 식별하지하는 데 도움이 매일 아침 사용-rw-r--r-- 1 root root 98756181 Mar 7 23:59 server005.Mon.tgz
The Backup for server005.Mon.tgz was done 3 days ago
-rw-r--r-- 1 root root 23663925 Mar 3 18:00 server006.Fri.tgz
The Backup for server006.Fri.tgz was done 3 days ago
-rw-r--r-- 1 root root 23663925 Mar 3 18:00 server009.Mon.tgz
The Backup for server009.Mon.tgz was done 3 days ago
는 스크립트 파일에 의해 얼마나 오래된 보여주는 모든 파일에 코멘트를 표시 파일의 현재 날짜 (일)를 사용하여 파일의 생성 날짜에서 일 (일)을 뺀 다음 결과가 숫자 3보다 크면 파일의 일 수와 함께 주석을 표시하지만 그 일은 스크립트에 음수 값이 표시되기 때문에 실제 날짜가 29 일, 30 일 또는 1 일에 가까워지면 몇 가지 문제가 있습니다. 예를 들면 다음과 같습니다.
The Backup for backupserver001.Thu.tgz was done -11 days ago
The Backup for backupserver002.Wed.tgz was done -10 days ago
The Backup for backupserver003.Mon.tgz was done -21 days ago
나는 말했듯이 현재 날짜가 한 달의 끝이나 초에 가까울 때만 발생합니다.
저는 프로그래밍이나 수학에별로 좋지 않습니다. 그래서 제가 여기서 도움을 찾고 있습니다. 이 작업이 훨씬 더 나은 방법으로 수행 될 수 있다고 확신합니다. 더 간단합니다. 코드가 정말 엉망입니다. 어떤 도움이라도 정말로 감사 할 것입니다.
'time'와'actual'이 달의 모두 일 수 있습니다을; '실제'가 * 이전 * 월에 발생했지만 한 달 전보다 작을 때'휴식'에 대한 음수 값을 얻습니다. – chepner