파일이 전송된 후 삭제되도록 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
아니면 다섯 번째 줄그리고6개 라인이 1개 라인으로 대체됩니다.
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"