Index: head/sysutils/tartarus/Makefile =================================================================== --- head/sysutils/tartarus/Makefile (revision 465990) +++ head/sysutils/tartarus/Makefile (revision 465991) @@ -1,33 +1,33 @@ # Created by: Juraj Lutter # $FreeBSD$ PORTNAME= tartarus PORTVERSION= 0.9.8 -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= sysutils MASTER_SITES= http://wertarbyte.de/tartarus/ \ http://ftp.wilbury.sk/pub/FreeBSD/local/distfiles/ MAINTAINER= otis@sk.FreeBSD.org COMMENT= Wrappers around common Unix tools for simplified backup solution LICENSE= GPLv3 LICENSE_FILE= ${WRKSRC}/COPYING RUN_DEPENDS= ${LOCALBASE}/bin/bash:shells/bash \ ${LOCALBASE}/bin/gtar:archivers/gtar \ ${LOCALBASE}/bin/curl:ftp/curl \ ${LOCALBASE}/bin/getopt:misc/getopt USES= gmake perl5 shebangfix tar:bzip2 SHEBANG_FILES= ${WRKSRC}/bin/* do-install: cd ${WRKSRC}/bin && ${INSTALL_SCRIPT} charon charon.ftp charon.local \ charon.pipe orpheus tartarus ${STAGEDIR}${PREFIX}/bin cd ${WRKSRC}/lib && ${COPYTREE_SHARE} Tartarus ${STAGEDIR}${PREFIX}/${SITE_PERL_REL} cd ${WRKSRC}/man && ${INSTALL_MAN} charon.ftp.1 charon.local.1 \ charon.pipe.1 tartarus.1 ${STAGEDIR}${PREFIX}/man/man1 ${LN} -sf charon.ftp.1 ${STAGEDIR}${PREFIX}/man/man1/charon.1 .include Index: head/sysutils/tartarus/files/patch-bin__tartarus =================================================================== --- head/sysutils/tartarus/files/patch-bin__tartarus (revision 465990) +++ head/sysutils/tartarus/files/patch-bin__tartarus (revision 465991) @@ -1,115 +1,120 @@ ---- bin/tartarus.orig 2016-08-08 16:38:21.322171000 +0000 -+++ bin/tartarus 2016-08-08 16:39:07.701706000 +0000 +--- bin/tartarus.orig 2018-03-30 17:57:10.233266000 +0100 ++++ bin/tartarus 2018-03-30 17:57:45.818667000 +0100 @@ -41,6 +41,8 @@ set -f shopt -s nocasematch +typeset -x PATH=/usr/local/bin:/usr/local/sbin:${PATH} + CMD_INCREMENTAL="no" CMD_UPDATE="no" PROFILE="" @@ -527,7 +529,7 @@ # # Disabling this option will stop Tartarus from checking its website for updates # of itself. -CHECK_FOR_UPDATE="yes" +CHECK_FOR_UPDATE="no" # #=item FILE_LIST_CREATION # @@ -540,6 +542,37 @@ # This defines the directory lists of the processed files are placed in. FILE_LIST_DIRECTORY="" # +#=item SFTP_AUTH_METHOD +# +# Defines SFTP authentication method: can be "password" or "pubkey" +SFTP_AUTH_METHOD="password" +# +#=item SFTP_AUTH_PRIVKEY +# +# Defines SSH private key for authentication +SFTP_AUTH_PRIVKEY="" +# +#=item SFTP_AUTH_PUBKEY +# +# Defines SSH public key for authentication +SFTP_AUTH_PUBKEY="" +# +#=item SFTP_AUTH_PRIVKEY_TYPE +# +# Defines SSH private key type (PEM|DER|ENG)A +# Defaults to PEM +SFTP_AUTH_PRIVKEY_TYPE="PEM" +# +#=item SFTP_AUTH_PRIVKEY_PASS +# +# Defines SFTP_AUTH_PRIVKEY passphrase +SFTP_AUTH_PRIVKEY_PASS="" +# +#=item SFTP_AUTH_HOSTPUBMD5 +# +# Defines SFTP host MD5 pubkey +SFTP_AUTH_HOSTPUBMD5="" +# #=back # #=cut @@ -616,7 +649,7 @@ constructFilename() { local INC="" if isEnabled "$INCREMENTAL_BACKUP"; then - local BASEDON=$(date -r "$INCREMENTAL_TIMESTAMP_FILE" '+%Y%m%d-%H%M') + local BASEDON=$(stat -f '%Sm' -t '%Y%m%d-%H%M' "$INCREMENTAL_TIMESTAMP_FILE") INC="-inc-${BASEDON}" fi local CHUNK="" @@ -638,10 +671,10 @@ case "$ASSEMBLY_METHOD" in tar|"") # use the traditional tar setup - requireCommand tar || cleanup 1 + requireCommand gtar || cleanup 1 collate() { local TAROPTS="--no-unquote --no-recursion $TAR_OPTIONS" - call tar cpf - $TAROPTS --null -T - + call gtar cpf - $TAROPTS --null -T - local EXITCODE=$? # exit code 1 means that some files have changed while backing them # up, we think that is OK for now -@@ -678,17 +711,24 @@ +@@ -678,21 +711,28 @@ # define storage procedure storage() { # stay silent, but print error messages if aborting - local OPTS="-u $STORAGE_FTP_USER:$STORAGE_FTP_PASSWORD -s -S" - if isEnabled "$STORAGE_FTP_USE_SSL"; then - OPTS="$OPTS --ftp-ssl" - fi - if isEnabled "$STORAGE_FTP_SSL_INSECURE"; then - OPTS="$OPTS -k" - fi + local OPTS="-s -S -u $STORAGE_FTP_USER:" local PROTO="ftp" - if isEnabled "$STORAGE_FTP_USE_SFTP"; then - PROTO="sftp" - fi + [ "$SFTP_AUTH_METHOD" != "pubkey" -a "$STORAGE_FTP_PASSWORD" != "" ] && OPTS="${OPTS}${STORAGE_FTP_PASSWORD}" + if isEnabled "$STORAGE_FTP_USE_SFTP"; then + PROTO="sftp" + if isEnabled "$STORAGE_FTP_SSL_INSECURE"; then + OPTS="$OPTS -k" + fi + [ "$SFTP_AUTH_PRIVKEY" != "" ] && OPTS="$OPTS --key $SFTP_AUTH_PRIVKEY" + [ "$SFTP_AUTH_PUBKEY" != "" ] && OPTS="$OPTS --pubkey $SFTP_AUTH_PUBKEY" + [ "$SFTP_AUTH_PRIVKEY_TYPE" != "" ] && OPTS="$OPTS --key-type $SFTP_AUTH_PRIVKEY_TYPE" + [ "$SFTP_AUTH_PRIVKEY_PASS" != "" ] && OPTS="$OPTS --pass $SFTP_AUTH_PRIVKEY_PASS" + [ "$SFTP_AUTH_HOSTPUBMD5" != "" ] && OPTS="$OPTS --hostpubmd5 $SFTP_AUTH_HOSTPUBMD5" + else + if isEnabled "$STORAGE_FTP_USE_SSL"; then + OPTS="$OPTS --ftp-ssl" + fi + fi local FILE=$(constructFilename) local URL="$PROTO://$STORAGE_FTP_SERVER/$STORAGE_FTP_DIR/$FILE" debug "Uploading backup to $URL..." +- curl $OPTS --upload-file - "$URL" ++ curl $OPTS --ftp-create-dirs --upload-file - "$URL" + } + ;; + FILE)