特定のフォルダに最新のアーカイブを解凍し、それを使用して(明確にするためにコードを削除します)、アーカイブを作成してテストし、すべてが正常に機能した場合にフォルダを削除する小さなシェル機能を作成しましたtmp
。そうでなければ 止める。時々動作しないことがあります(保管の問題でいつ再試行するのかわかりません)。いいえフォルダを削除して停止します。私の小さなスクリプトは動作しません。すでにコメントしていますが、文の1つは機能しませんでした。したがって、私のスクリプトは次のようになります。
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
}
機能させるには何を変更する必要がありますか?