私はこのbashスクリプトを使って私のサーバーの3つのバックアップを維持しています。何らかの理由で、私の変数の1つの名前で空のファイルをランダムに生成します。選択した変数名はランダムに表示され、実行されるたびにファイルは生成されません。
Ubuntu Server 16.04LTSを実行しています。
スクリプトは期待どおりに完全に動作します。私はbashが時々そのファイルを生成する理由を知りたいです。
注:Sambaアドレス、CIFS資格情報の場所など、一部の機密情報は省略しています。これは意図的なものであり、実際のスクリプトでは正確です。
bash backup.bash
bashを使用して明示的にコマンドを使用して、cronジョブでこのスクリプトを実行します。
#!/bin/bash
## The number of backups that we want to keep
MAX_BACKUPS=3
## The directory to store the backups
BACKUP_DIR="OMITTED"
## The address of the Samba Share
REMOTE_ADDR="OMITTED"
## What we want to name the backup
BACKUP_NAME="$(date +"%m_%d_%Y")_backup.tar.gz"
## Mount the Samba Share to the backup directory
mount -t cifs -o credentials=OMITTED,noperm $REMOTE_ADDR $BACKUP_DIR
## Make todays backup
tar -cpzvf $BACKUP_DIR/$BACKUP_NAME --exclude-from=/backup_scripts/backup.exclude /
## The number of backups that we now have
COUNT="$(find $BACKUP_DIR -maxdepth 1 -type f -name '*_backup.tar.gz' | wc -l )"
## If we have more backups than MAX_BACKUPS
if ((COUNT > MAX_BACKUPS)); then
## Delete the oldest file (DETERMINED BY MODIFICATION DATE)
cd $BACKUP_DIR
rm "$(ls -t | tail -1)"
fi
# Unmount the Samba Share for safety
umount $BACKUP_DIR
答え1
編集:@StéphaneChazelasが指摘したように、問題はスクリプトが呼び出されず、設定が機能しないことbash
です(( ))
。bash
シェルで試してみてください。bash my_script.sh
そしてこれがひどく失敗する可能性もありますrm
。読んでくださいこのFAQ。