From 42ec53a83b911fcc8bc1daa005105d3bab80659e Mon Sep 17 00:00:00 2001 From: Gottfried Mayer Date: Mon, 31 Oct 2022 14:39:38 +0100 Subject: [PATCH 1/2] new parameter PLUGIN_ONLY NEWER - only uploads newer files (mirror parameter -n) - ignores timestamp due to time differences between local and remote system (mirror parameter --ignore time) - removes any files/folders from the server that are not present in the source directory (mirror parameter -e) --- upload.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/upload.sh b/upload.sh index 544fac8..b61dde9 100755 --- a/upload.sh +++ b/upload.sh @@ -32,6 +32,12 @@ else PLUGIN_CHMOD="" fi +if [ "$PLUGIN_ONLY_NEWER" = true ]; then + PLUGIN_ONLY_NEWER="-e -n --ignore-time" +else + PLUGIN_ONLY_NEWER="" +fi + if [ "$PLUGIN_CLEAN_DIR" = true ]; then PLUGIN_CLEAN_DIR="rm -r $PLUGIN_DEST_DIR" else @@ -76,6 +82,6 @@ lftp $PLUGIN_DEBUG -e "set xfer:log 1; \ set net:max-retries 3; \ $PLUGIN_PRE_ACTION; \ $PLUGIN_CLEAN_DIR; \ - mirror --verbose $PLUGIN_CHMOD -R $PLUGIN_MIRROR_OPTS $PLUGIN_INCLUDE_STR $PLUGIN_EXCLUDE_STR $(pwd)$PLUGIN_SRC_DIR $PLUGIN_DEST_DIR; \ + mirror --verbose $PLUGIN_CHMOD -R $PLUGIN_ONLY_NEWER $PLUGIN_MIRROR_OPTS $PLUGIN_INCLUDE_STR $PLUGIN_EXCLUDE_STR $(pwd)$PLUGIN_SRC_DIR $PLUGIN_DEST_DIR; \ $PLUGIN_POST_ACTION;" \ -u $FTP_USERNAME,$FTP_PASSWORD $PLUGIN_HOSTNAME From ae476dce41df8a157c17a8541fe7a802272782e4 Mon Sep 17 00:00:00 2001 From: Gottfried Mayer Date: Mon, 31 Oct 2022 14:55:51 +0100 Subject: [PATCH 2/2] document PLUGIN_ONLY_NEWER parameter --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5120fb8..cf80e30 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ environment: PLUGIN_INCLUDE: (egrep like pattern matching) PLUGIN_CHMOD: true | false (default true) PLUGIN_CLEAN_DIR: true | false (default false) + PLUGIN_ONLY_NEWER: true | false (default false) PLUGIN_AUTO_CONFIRM: true | false (default false) PLUGIN_SSH_ACCEPT_RSA: true | false (default false) PLUGIN_PRE_ACTION: string (default empty) @@ -44,7 +45,7 @@ The `PLUGIN_PRE_ACTION` is executed *before* the `PLUGIN_CLEAN_DIR` (if set). The `PLUGIN_POST_ACTION` is executed *after* the ftp "mirror" operation. Multiple Actions can be set, they need to be divided by a semicolon `;` . -**Example:** +#### Example: There is another project's folder ("project2") in a subfolder in the destination directory. We need to move this folder to a temporary location and restore it after the upload completed. ```yaml PLUGIN_CLEAN_DIR: true @@ -52,6 +53,15 @@ PLUGIN_PRE_ACTION: mv /dest/project2 /temp/project2; PLUGIN_POST_ACTION: mv /temp/project2 /dest/project2; ``` +### Transfer only newer files +The setting `PLUGIN_ONLY_NEWER: true` (only transfer newer files) does not mix well with the `PLUGIN_CLEAN_DIR: true` (clean destination directory before transfer). + +When setting `PLUGIN_ONLY_NEWER: true` parameter to true, make sure to _exclude_ any files/folders that are not present in the source directory, but should be kept on the server. +#### Example: +Source folder does not contain an `.env` file, it exists on the remote server and should be kept. +Also, we do not want to transfer the source's `.git` folder and `.gitignore` file: +Set `PLUGIN_ONLY_NEWER: true` and `PLUGIN_EXCLUDE: ^\.git/$,^\.gitignore$,^\.env$` environment variables. + ## Full file example ```yaml