This commit is contained in:
2025-06-25 11:06:36 +07:00
parent 8dc1ec73ae
commit e443a74d53
+19 -15
View File
@@ -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