
我希望你可以幫我...
我製作了一個 perl 和 bash 腳本來備份我的防火牆並透過 tftp 進行傳輸
#!/bin/sh
perl /deploy/scripts/backups/10.160.23.1.pl > /dev/null 2>&1
perl /deploy/scripts/backups/10.160.23.2.pl > /dev/null 2>&1
所以這會將檔案傳輸到我的 tftp 目錄 /tftpboot/
ls -l /tftpboot/
total 532
-rw-rw-rw- 1 tftp tftp 209977 jun 6 14:01 10.160.23.1_20140606.cfg
-rw-rw-rw- 1 tftp tftp 329548 jun 6 14:02 10.160.23.2_20140606.cfg
我的問題是如何改進我的腳本,根據名稱(在本例中是 IP 位址)動態地將這些檔案移至另一個資料夾
例如: 10.160.23.1_20140606.cfg 移到 /deploy/backups/10.160.23.1/
是這個問題的答案肯定是在谷歌上,但想知道是否有一個特定的解決方案來滿足這個請求,並學習如何做:)
謝謝!
答案1
只需將檔案名稱轉換為資料空間,然後對其進行操作以提取所需的信息,然後使用該資訊。筆記:對於生產,使用比/tftpboot/*.cfg
#!/bin/bash
for file in /tftpboot/*.cfg ; do
ipaddr=$( echo "$file" | cut -d/ -f3 | cut -d_ -f1 )
[ -d /deploy/backups/${ipaddr} || mkdir -p /deploy/backups/${ipaddr}
mv --verbose "$file" /deploy/backups/${ipaddr}/
done