Saya sedang membuat skrip bash untuk membuat cadangan database mysql saya.
Sebenarnya, saya ingin menghapus yang lama.
Jadi, saya membuat skrip saya dengan variabel untuk pemeliharaan.
Seluruh skrip sebenarnya berfungsi, satu-satunya yang tidak berfungsi, adalah penghapusan yang lama. Saya pikir itu akan menjadi bagian yang paling mudah.
Bagaimanapun, ini kode saya, dapatkah seseorang memberi tahu saya apa yang salah?
Dan perintah rm mengembalikan saya :rm: impossible de supprimer « /path/to/backup/files/*.gz »: Aucun fichier ou dossier de ce type
Artinya rm: impossible to delete « /path/to/backup/files/*.gz »: no files or directory of this type
Tapi anehnya yang pertama saya temukan scriptnya di tutorial
Kedua, bahwa jika saya meluncurkan sendiri "rm /path/to/backup/files/*.gz" dalam perintah shell, ini berfungsi dan menghapus semua file .gz (seperti yang diharapkan)
#!/bin/bash
USER="***"
PASSWORD="****"
OUTPUT="/path/to/backup/files"
rm "$OUTPUT/*.gz"
databases=`mysql --user=$USER --password=$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
for db in $databases; do
if [[ "$db" != "information_schema" ]] && [[ "$db" != _* ]] && [[ "$db" != "performance_schema" ]] ; then
echo "Dumping database: $db"
mysqldump --force --opt --user=$USER --password=$PASSWORD --databases $db > $OUTPUT/`date +%Y%m%d`.$db.sql
gzip $OUTPUT/`date +%Y%m%d`.$db.sql
fi
done
Terima kasih,
Jawaban yang Diterima:
Cara alternatif adalah dengan menggabungkan rm dengan find dan/atau xargs .
Ini adalah beberapa alternatif:
find "$output" -name *.gz -type f -delete
find "$output" -name "*.gz" -type f -exec rm '{}' \;
find "$output" -name *.gz -type f -print0 | xargs -0 rm
PS:ketik f berarti mencari file.
Secara default find mencari semua subdir. Anda dapat membatasi operasi find ke direktori saat ini jika diperlukan dengan menggunakan opsi maxdepth:
find "$output" -maxdepth 1 -name "*.gz" -type f -exec rm '{}' \;
Jika Anda perlu tetap bekerja dengan rm dan variabel, ini bekerja untuk saya dalam satu baris:
out="/home/gv/Desktop/PythonTests/appsfiles";rm "$out"/*.txt
rm: remove regular file '/home/gv/Desktop/PythonTests/appsfiles/a.txt'? y
rm: remove regular file '/home/gv/Desktop/PythonTests/appsfiles/a ver 1.txt'? y
rm: remove regular file '/home/gv/Desktop/PythonTests/appsfiles/b.txt'? y
rm: remove regular file '/home/gv/Desktop/PythonTests/appsfiles/c.txt'? y
rm: remove regular file '/home/gv/Desktop/PythonTests/appsfiles/d.txt'? y