You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
949 B
Bash

#!/bin/bash
set -e
#
# this script compresses everything in $source and saves it in $destination
#
source="$HOME/kskcloud/Musik/"
tmp="$HOME/Musik.tiny/"
destination="$HOME/kskcloud/Musik.tiny/"
placeholder="$destination/a"
rm -rf "$tmp"
mkdir "$tmp"
mkdir -p "$destination"
# create a placeholder to prevent * from failing
touch "$placeholder"
# copy original target files and existing files as cache
echo 'copying . . .'
cp -a --reflink=always "$source/"* "$destination/"* "$tmp"
# compress with opus; +e because ffmpeg errors on .jpg, .txt, etc.
echo 'compressing . . .'
set +e
find "$tmp" -type f -not -name '*.opus' | parallel --eta --progress 'ffmpeg -v 0 -n -i ""{}"" -c:a libopus -map_metadata 0 -b:a 128k ""{.}.opus""'
set -e
# delete all non-opus files
echo 'deleting . . .'
find "$tmp" -type f -not -name '*.opus' -delete
# copy compressed files to target destination
cp -a --reflink=always "$tmp/"* "$destination"
rm -r "$tmp"