특정 폴더에 최신 아카이브의 압축을 풀고 이를 사용한 다음(명확성을 위해 코드가 제거됨) 아카이브를 만들고 테스트하고 모든 것이 제대로 작동하면 폴더를 삭제하는 작은 쉘 기능을 만들었습니다 tmp
.그렇지 않으면 멈추다. 때때로 작동하지 않는 경우가 있습니다(보관 문제로 언제 재시도해야 할지 모르겠습니다).아니요폴더를 삭제하고 중지하세요. 내 작은 스크립트가 작동하지 않습니다. 이미 댓글을 달았는데 문장 중 하나가 작동하지 않았습니다. 따라서 제 스크립트는 다음과 같습니다.
mine() {
src="/mnt/myfolder"
game_folder="MyGameFolder"
src_folder="${src}/${game_folder}"
src_archive="${src}/${game_folder}.tar"
tmp="/tmp/tmpfolder"
# Expand path (don't do this if path is set by user input!):
echo "Folder tmp: '${tmp}'."
[ ! -d "${src}" ] && echo "Folder src: '${src}' not found. Exiting." && return 1
rm -rf "${tmp}"
mkdir "${tmp}"
[ ! -d "${tmp}" ] && echo "Folder tmp: '${tmp}' not found. Exiting." && return 1
cd "${tmp}"
if [ -d "${src_folder}" ]; then
# Archive folder exists -> find latest archive and uncompress:
latest="$(ls -t "${src_folder}/" | head -1)"
full_latest="${src_folder}/$latest"
if [ -f "${full_latest}" ]; then
echo Copying "${latest}"...
cp "${full_latest}" .
echo Unpacking "${latest}"...
tar xf "${latest}"
else
echo "Warn: no archive found in: '${src_folder}'"
fi
else
echo "No folder: '${src_folder}', creating folder, it's a new game..."
mkdir "${src_folder}" \
|| (echo "Unable to create '${src_folder}'" ; return 1)
fi
archive="$(date '+%Y.%m.%d-%Hh%Mm%Ss').${game_folder}.tar.bz2"
printf "\n\nMaking archive '${archive}'..."
# here's the one-liner that doesn't work:
tar cjf "${archive}" "${game_folder}/" &&
mv "${archive}" "${src_folder}/" &&
latest="$(ls -t "${src_folder}/" | head -1)"
&& tar -tf "${latest}" ||
(echo "Error tar cjf ${archive}" "${src_archive}/" && exit 1)
rm -rf "${tmp}"
cd
printf "\nDone. You can exit the shell if you want now.\n\n"
return 0
}
작동하게 하려면 무엇을 변경해야 합니까?