|
|
|
|
@ -137,12 +137,14 @@ count_files() {
|
|
|
|
|
|
|
|
|
|
local count=0
|
|
|
|
|
for dir in "${src_dirs[@]}"; do
|
|
|
|
|
local find_cmd=(find "$dir" -xdev)
|
|
|
|
|
local find_cmd=(find . -xdev)
|
|
|
|
|
if [[ ${#exclude_args[@]} -gt 0 ]]; then
|
|
|
|
|
find_cmd+=(\( "${exclude_args[@]}" -prune \) -o -print)
|
|
|
|
|
fi
|
|
|
|
|
pushd "$dir"
|
|
|
|
|
count=$((count + $("${find_cmd[@]}" | wc -l)))
|
|
|
|
|
done
|
|
|
|
|
popd
|
|
|
|
|
done >/dev/null
|
|
|
|
|
echo "$count"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -155,19 +157,21 @@ run_rsync_backup() {
|
|
|
|
|
|
|
|
|
|
echo "Starting backup..."
|
|
|
|
|
|
|
|
|
|
local rsync_opts=("-Aavx")
|
|
|
|
|
for e in "${exclude_paths[@]}"; do
|
|
|
|
|
rsync_opts+=("--exclude=$e")
|
|
|
|
|
done
|
|
|
|
|
if [[ -n "$exclude_file" ]]; then
|
|
|
|
|
rsync_opts+=("--exclude-from=$exclude_file")
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
for dir in "${src_dirs[@]}"; do
|
|
|
|
|
base="$(basename "$dir")"
|
|
|
|
|
dest_dir="$dest_path/$base"
|
|
|
|
|
rsync "${rsync_opts[@]}" "$dir"/ "$dest_dir"/ | pv -ltps "$file_count" > /dev/null
|
|
|
|
|
done
|
|
|
|
|
local base="$(basename "$dir")"
|
|
|
|
|
local dest_dir="$dest_path/$base"
|
|
|
|
|
|
|
|
|
|
local rsync_opts=("-aAvx")
|
|
|
|
|
rsync_opts+=("--delete")
|
|
|
|
|
for e in "${exclude_paths[@]}"; do
|
|
|
|
|
rsync_opts+=("--exclude=$e")
|
|
|
|
|
done
|
|
|
|
|
if [[ -n "$exclude_file" ]]; then
|
|
|
|
|
rsync_opts+=("--exclude-from=$exclude_file")
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
rsync "${rsync_opts[@]}" "$dir"/ "$dest_dir"/
|
|
|
|
|
done | pv -ltps "$file_count" > /dev/null
|
|
|
|
|
echo "Rsync completed."
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -229,7 +233,7 @@ main() {
|
|
|
|
|
|
|
|
|
|
local exclude_args=()
|
|
|
|
|
for e in "${EXCLUDE_PATHS[@]}"; do
|
|
|
|
|
exclude_args+=( -path "$e" -o )
|
|
|
|
|
exclude_args+=( -path "./$e" -o )
|
|
|
|
|
done
|
|
|
|
|
if [[ -n "$EXCLUDE_FILE" ]]; then
|
|
|
|
|
while IFS= read -r line || [[ -n "$line" ]]; do
|
|
|
|
|
|