-1

バックアップファイルのみを保持するLinuxベースのFTPサーバーのクリーンアップを自動化する必要があります。

「\var\ DATA」ディレクトリには、ディレクトリのコレクションがあります。ここでバックアップに使用されるディレクトリはすべて「DEV」で始まります。各「DEVxxx*」ディレクトリには、実際のバックアップファイルに加えて、これらのデバイスのメンテナンス中に必要になった可能性のあるユーザーファイルがあります。

次のファイルのみを保持します。これらの「DEVxxx*」ディレクトリで見つかった他のファイルはすべて削除されます。

The newest two backups:  ls -t1 | grep -m2 ^[[:digit:]{6}_Config]  
The newest backup done on the first of the month:  ls -t1 | grep -m1 ^[[:digit:]{4}01_Config] 
Any file that was modified less than 30 days ago:  find -mtime -30  
Our good configuration file:  ls verification_cfg

上記に一致しないものはすべて削除する必要があります。

これをどのようにスクリプト化できますか?

BASHスクリプトでこれを実行でき、タスクを実行するために毎日実行するcronジョブを作成できると思います。

4

2 に答える 2

1

もしかしてこういうこと?

{ ls -t1 | grep -m2 ^[[:digit:]{6}_Config] ;
  ls -t1 | grep -m1 ^[[:digit:]{4}01_Config] ;
  find -mtime -30 ;
  ls -1 verification_cfg ;
} | rsync -a --exclude=* --include-from=- /var/DATA/ /var/DATA.bak/
rm -rf /var/DATA
mv /var/DATA.bak /var/DATA
于 2012-09-17T12:57:47.857 に答える
0

価値があるのは、タスクを実行するために作成したbashスクリプトです。コメントは大歓迎です。

#!/bin/bash

# This script follows these rules:
#
#  - Only process directories beginning with "DEV"
#  - Do not process directories within the device directory
#  - Keep files that match the following criteria:
#     - Keep the two newest automated backups
#     - Keep the six newest automated backups generated on the first of the month
#     - Keep any file that is less than 30 days old
#     - Keep the file "verification_cfg"
#
#  - An automated backup file is identified as six digits, followed by "_Config"
#    e.g.  20120329_Config


# Remember the current directory
CurDir=`pwd`

# FTP home directory
DatDir='/var/DATA/'
cd $DatDir

# Only process directories beginning with "DEV"
for i in `find . -type d -maxdepth 1 | egrep '\.\/DEV' | sort` ; do
 cd $DatDir

 echo Doing "$i"
 cd $i

 # Set the GROUP EXECUTE bit on all files
 find . -type f -exec chmod g+x {} \;

 # Find the two newest automated config backups
 for j in `ls -t1 | egrep -m2 ^[0-9]{8}_Config$` ; do
  chmod g-x $j
 done

 # Find the six newest automated config backups generated on the first of the month
 for j in `ls -t1 | egrep -m6 ^[0-9]{6}01_Config$` ; do
  chmod g-x $j
 done

 # Find all files that are less than 30 days old
 for j in `find -mtime -30 -type f` ; do
  chmod g-x $j
 done

 # Find the "verification_cfg" file
 for j in `find -name verification_cfg` ; do
  chmod g-x $j
 done

 # Remove any files that still have the GROUP EXECUTE bit set
 find . -type f -perm -g=x -exec rm -f {} \;

done

# Back to the users current directory
cd $CurDir
于 2012-09-19T10:25:45.313 に答える