需要在bash脚本中更改目录

需要在bash脚本中更改目录

我正在尝试更改 bash 脚本中的目录,以便在文件传输后删除文件。这是我的脚本以及我想做的事情:

请参阅第 5 行:

  1 #!/bin/bash
  2 name=$(date '+%y-%m-%d')
  3 tar -zcf /var/tmp/backups/splunkbackup$(date '+%y-%m-%d').tar.gz /opt/splunk/etc/
  4 rsync -avz /var/tmp/backups/splunkbackup* [email protected]:/var/log/splunk/backups/essearchhead
  5 cd /var/tmp/backups/splunkbackup*
  6 rm splunkbackup*

答案1

rsync有一个内置方法可以完成您似乎想要手动执行的操作:

man rsync

--删除源文件

这告诉 rsync 从发送端删除属于传输一部分且已在接收端成功复制的文件(即非目录)。

答案2

该模式/var/tmp/backups/splunkbackup*可能会扩展到一个列表文件而不是您可以更改为的目录的名称。

我的猜测是第五行应该是

cd /var/tmp/backups

或者,第五行六行将被单行取代

rm /var/tmp/backups/splunkbackup*

答案3

无需更改目录。

5rm /var/tmp/backups/splunkbackup*

6``

尽管递归力可能是有序的

5rm -rf /var/tmp/backups/splunkbackup*

6``

答案4

假设您一次只想处理一个存档文件,您可以将文件名保存到一个变量中:

file=/var/tmp/backups/splunkbackup$(date '+%y-%m-%d').tar.gz
tar -zcf "$file" /opt/splunk/etc/
rsync -avz "$file" [email protected]:/...
rm "$file"

尽管您可能只想在传输成功时删除文件,但可以这样做:

rsync -avz "$file" [email protected]:/... &&
  rm "$file"

相关内容