diff --git a/scripts/tmp-files.sh b/scripts/tmp-files.sh new file mode 100755 index 000000000..d6b93a0aa --- /dev/null +++ b/scripts/tmp-files.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# Script allows to save arbitrary files in CRIU dump dir and properly restore +# these files on CRIU restore cmd. +# +# Normally you need to call this script for files that can be lost between +# CRIU checkpoint and restore cmds. For example for files stored on non-tmpfs +# mount points. That's why this script is called tmp-files. +# +# You should call this script on both CRIU dump and restore cmds. +# +# Usage: +# criu dump --action-script \ +# '$CRIU_SCRIPTS_PATH/tmp-files.sh /tmp/ycm_temp /home/user/.tmpfile.txt.swp' +# criu restore --action-script $CRIU_SCRIPTS_PATH/tmp-files.sh +# +# Note: absolute path to tmp-files.sh should be supplied in --action-script with '' +# + +POSTDUMP="post-dump" +PRERESTORE="pre-restore" +DUMPARGS="--create --absolute-names --gzip --no-unquote --no-wildcards --file" +RESTOREARGS="--extract --gzip --no-unquote --no-wildcards --absolute-names --directory / --file" +IMGFILE=$CRTOOLS_IMAGE_DIR"/tmpfiles.tar.gz" + +MY_NAME=`basename "$0"` + +case "$CRTOOLS_SCRIPT_ACTION" in + $POSTDUMP ) + if [ "$#" -lt 1 ]; then + echo "$MY_NAME: ERROR! No files are given." + exit 1 + fi + tar $DUMPARGS $IMGFILE -- "$@" + exit $? + ;; + $PRERESTORE ) + if [ "$#" -ne 0 ]; then + echo "$MY_NAME: ERROR! Not expected script args." + exit 1 + fi + tar $RESTOREARGS $IMGFILE + exit $? + ;; +esac + +exit 0