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

아니면 다섯 번째 줄그리고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"

관련 정보