Merge pull request #7598 from termux/termux-tools
termux-tools: add rudimentary backup/restore tools
This commit is contained in:
commit
6e3e92d625
@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://termux.com/
|
|||||||
TERMUX_PKG_DESCRIPTION="Basic system tools for Termux"
|
TERMUX_PKG_DESCRIPTION="Basic system tools for Termux"
|
||||||
TERMUX_PKG_LICENSE="GPL-3.0"
|
TERMUX_PKG_LICENSE="GPL-3.0"
|
||||||
TERMUX_PKG_MAINTAINER="@termux"
|
TERMUX_PKG_MAINTAINER="@termux"
|
||||||
TERMUX_PKG_VERSION=0.138
|
TERMUX_PKG_VERSION=0.139
|
||||||
TERMUX_PKG_SKIP_SRC_EXTRACT=true
|
TERMUX_PKG_SKIP_SRC_EXTRACT=true
|
||||||
TERMUX_PKG_PLATFORM_INDEPENDENT=true
|
TERMUX_PKG_PLATFORM_INDEPENDENT=true
|
||||||
TERMUX_PKG_ESSENTIAL=true
|
TERMUX_PKG_ESSENTIAL=true
|
||||||
@ -34,9 +34,10 @@ termux_step_make_install() {
|
|||||||
chmod +x $WRAPPER_FILE
|
chmod +x $WRAPPER_FILE
|
||||||
done
|
done
|
||||||
|
|
||||||
for script in chsh dalvikvm login pkg su termux-fix-shebang termux-info \
|
for script in chsh dalvikvm login pkg su termux-fix-shebang termux-backup \
|
||||||
termux-open termux-open-url termux-reload-settings termux-reset \
|
termux-info termux-open termux-open-url termux-reload-settings \
|
||||||
termux-setup-storage termux-wake-lock termux-wake-unlock termux-change-repo; do
|
termux-reset termux-restore termux-setup-storage termux-wake-lock \
|
||||||
|
termux-wake-unlock termux-change-repo; do
|
||||||
install -Dm700 $TERMUX_PKG_BUILDER_DIR/$script $TERMUX_PREFIX/bin/$script
|
install -Dm700 $TERMUX_PKG_BUILDER_DIR/$script $TERMUX_PREFIX/bin/$script
|
||||||
sed -i -e "s%\@TERMUX_APP_PACKAGE\@%${TERMUX_APP_PACKAGE}%g" \
|
sed -i -e "s%\@TERMUX_APP_PACKAGE\@%${TERMUX_APP_PACKAGE}%g" \
|
||||||
-e "s%\@TERMUX_BASE_DIR\@%${TERMUX_BASE_DIR}%g" \
|
-e "s%\@TERMUX_BASE_DIR\@%${TERMUX_BASE_DIR}%g" \
|
||||||
|
62
packages/termux-tools/termux-backup
Executable file
62
packages/termux-tools/termux-backup
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
#!@TERMUX_PREFIX@/bin/bash
|
||||||
|
set -e -u
|
||||||
|
|
||||||
|
export PREFIX=@TERMUX_PREFIX@
|
||||||
|
|
||||||
|
msg() {
|
||||||
|
echo "$@" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
show_usage() {
|
||||||
|
msg
|
||||||
|
msg "Usage: termux-backup [output file]"
|
||||||
|
msg
|
||||||
|
msg "Script for backing up Termux installation directory, \$PREFIX."
|
||||||
|
msg "It WILL NOT backup your home directory."
|
||||||
|
msg
|
||||||
|
msg "Backup is performed as TAR archive. Compression is determined"
|
||||||
|
msg "by output file extension. If file name is '-', then tarball is"
|
||||||
|
msg "written to stdout and is uncompressed."
|
||||||
|
msg
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
msg
|
||||||
|
msg "[!] Output file path is not specified."
|
||||||
|
show_usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $# -gt 1 ]; then
|
||||||
|
shift 1
|
||||||
|
msg
|
||||||
|
msg "[!] Got extra arguments: $@"
|
||||||
|
show_usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$PREFIX" ]; then
|
||||||
|
msg "[!] $PREFIX: directory does not exist."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
-?|-h|--help|--usage) show_usage; exit 0;;
|
||||||
|
*) BACKUP_FILE_PATH=$1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$BACKUP_FILE_PATH" != "-" ]; then
|
||||||
|
CAN_AUTOCOMPRESS=yes
|
||||||
|
if [ -e "$BACKUP_FILE_PATH" ]; then
|
||||||
|
msg
|
||||||
|
msg "[!] Refusing to overwrite already existing file '$BACKUP_FILE_PATH'."
|
||||||
|
msg
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
CAN_AUTOCOMPRESS=
|
||||||
|
fi
|
||||||
|
|
||||||
|
tar --warning=no-file-ignored -f "$BACKUP_FILE_PATH" \
|
||||||
|
-c ${CAN_AUTOCOMPRESS+--auto-compress} \
|
||||||
|
-C "@TERMUX_BASE_DIR@" ./usr
|
63
packages/termux-tools/termux-restore
Normal file
63
packages/termux-tools/termux-restore
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#!@TERMUX_PREFIX@/bin/bash
|
||||||
|
set -e -u
|
||||||
|
|
||||||
|
export PREFIX=@TERMUX_PREFIX@
|
||||||
|
|
||||||
|
msg() {
|
||||||
|
echo "$@" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
show_usage() {
|
||||||
|
msg
|
||||||
|
msg "Usage: termux-restore [input file]"
|
||||||
|
msg
|
||||||
|
msg "Script for restoring Termux installation directory (\$PREFIX)"
|
||||||
|
msg "from the given TAR archive."
|
||||||
|
msg
|
||||||
|
msg "It is expected that backup file was made by 'termux-backup'."
|
||||||
|
msg "Restoring procedure will erase all files in \$PREFIX directory"
|
||||||
|
msg "that are not present in the given backup file. Be careful."
|
||||||
|
msg
|
||||||
|
msg "Backup contents may be supplied via stdin by specifying input"
|
||||||
|
msg "file as '-'. Note that piped TAR archive must be uncompressed."
|
||||||
|
msg
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
msg
|
||||||
|
msg "[!] Input file path is not specified."
|
||||||
|
show_usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $# -gt 1 ]; then
|
||||||
|
shift 1
|
||||||
|
msg
|
||||||
|
msg "[!] Got extra arguments: $@"
|
||||||
|
show_usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
-?|-h|--help|--usage) show_usage; exit 0;;
|
||||||
|
*) BACKUP_FILE_PATH=$1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$BACKUP_FILE_PATH" != "-" ] && [ ! -e "$BACKUP_FILE_PATH" ]; then
|
||||||
|
msg
|
||||||
|
msg "[!] File '$BACKUP_FILE_PATH' does not exist."
|
||||||
|
msg
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
if [ "$BACKUP_FILE_PATH" != "-" ] && [ ! -f "$BACKUP_FILE_PATH" ]; then
|
||||||
|
msg
|
||||||
|
msg "[!] Path '$BACKUP_FILE_PATH' is not a regular file."
|
||||||
|
msg
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --recursive-unlink is added intentionally to delete all orphan/extra files
|
||||||
|
# in $PREFIX. It must be restored to a clean state as in backup tarball.
|
||||||
|
tar -x -C "@TERMUX_BASE_DIR@" -f "$BACKUP_FILE_PATH" \
|
||||||
|
--recursive-unlink --preserve-permissions ./usr
|
Loading…
Reference in New Issue
Block a user