백업 시스템을 만들기 위해 bash에서 작업 중입니다. 내 코드는
#!/bin/bash
if [ ! -d "BackUp" ]
then
mkdir BackUp
fi
echo "enter number of access days you want to take for back up."
read days
bak="$(find . -mtime +$days)"
for file in $bak
do
mv $file BackUp
done
tar -cvf BackUp.tgz BackUp >> backUp.log
그래서 현재는 tar에서만 로그 파일을 가져오고 있습니다. 따라서 전체 경로를 인쇄하지 않고 로그 파일의 텍스트에 대한 현재 작업 디렉터리 만 사용합니다. 내 코드의 마지막 줄은 로그 파일에 대한 입력을 사용합니다.
그러나 저장된 경로는
.BackUp/foo1
.BackUp/foo2
.BackUp/foo3
대신 나는 그것을 원한다
home/ubuntu/Downloads/BackUp/foo1
home/ubuntu/Downloads/BackUp/foo2
home/ubuntu/Downloads/BackUp/foo3
절대 경로를 변수에 저장하고 tar
명령 에서 사용할 수 있습니다 .
BackUpDirFullPath=$(cd BackUp && pwd)
로 command substitution
호출하는 당신이 실행하여 현재 디렉토리를 떠나되지 않습니다 서브 쉘 cd
.
업데이트 : 출력 절대 경로 (Mac OS에서)
를 만들기 위해 -v
서브 쉘의 루트 디렉토리로 변경하고 거기에서 실행해야했습니다 ...
(cd / && tar -cvf /$OLDPWD/BackUp.tgz $BackUpDirFullPath)
이것은 절대 경로를 출력합니다 ... 경로 이름 을 보존하는 선행을 보존하기 위해 /
시도 할 수 있습니다 -P
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다