Compare commits

...

40 Commits

Author SHA1 Message Date
4cd270ac54 Merge remote-tracking branch 'origin/master' into debian 2024-03-17 17:58:12 +01:00
553d15e38b updated/ generalised backup scripts 2024-03-17 17:58:00 +01:00
e37268fd88 Merge remote-tracking branch 'origin/master' into debian 2024-03-17 14:14:57 +01:00
46e9aea2dd fix: make functions known before usage 2024-03-17 14:14:34 +01:00
f23a40f524 Merge remote-tracking branch 'origin/master' into debian 2024-03-17 14:09:24 +01:00
7b1d0ef251 made script more robust 2024-03-17 14:08:34 +01:00
36e122b62c improved/ modernised "ex"-function 2024-03-17 14:01:36 +01:00
96893dff23 Merge remote-tracking branch 'origin/master' into debian 2024-01-18 16:29:16 +01:00
707b581b88 updated config 2024-01-18 16:15:59 +01:00
31e618be9e Merge remote-tracking branch 'origin/master' into debian 2024-01-18 15:53:02 +01:00
91d3d1d98d new script for easy archiving and compression and reversal of both 2024-01-18 15:51:40 +01:00
d79688f50f new script for easier transcoding 2024-01-18 15:51:11 +01:00
34baf7e029 simplified finding the home dir 2024-01-18 15:50:34 +01:00
3820ea0297 updated more or less common characters that could need escaping 2024-01-18 15:50:08 +01:00
43a70bb9de updated settings 2024-01-18 15:49:21 +01:00
c926e32cda accomodate for filenames with e.g.spaces 2024-01-18 15:43:43 +01:00
0848db107c updated edi backup script 2024-01-18 15:40:05 +01:00
236672fd44 Merge remote-tracking branch 'origin/master' into debian 2023-09-24 15:20:56 +02:00
e2f4267b7a fixed output 2023-09-24 15:11:14 +02:00
6f16c5e710 Merge remote-tracking branch 'origin/master' into debian 2023-09-17 14:43:55 +02:00
784818b510 mount unabhängig der clientmaschine 2023-09-17 14:43:44 +02:00
afbfeef4d2 Revert "mount unabhängig von der clientmaschine"
This reverts commit 937fe0142d.
2023-09-17 14:43:11 +02:00
8e29301d96 Merge remote-tracking branch 'origin/master' into debian 2023-09-17 14:33:42 +02:00
937fe0142d mount unabhängig von der clientmaschine 2023-09-17 14:33:20 +02:00
6fb25215b5 Merge remote-tracking branch 'origin/master' into debian 2023-08-20 17:32:10 +02:00
3837b797d0 fixed alias 2023-08-20 17:31:59 +02:00
812805ced5 Merge remote-tracking branch 'origin/master' into debian 2023-08-20 14:49:40 +02:00
32c066fe4d alias for quick start of x11vnc server 2023-08-20 14:49:07 +02:00
8ebda1aa12 new font: STIX 2 2023-08-20 14:48:02 +02:00
632a0c6741 Merge remote-tracking branch 'origin/master' into debian 2023-07-30 09:56:57 +02:00
e08fa4f6a6 updated ignores 2023-07-30 09:55:42 +02:00
fc13f9b73e project not needed
workspace too unsteady to commit
2023-07-30 09:53:27 +02:00
1ab292fe6f added linking via cp and rsync
added usage comments for sed
2023-07-30 09:52:07 +02:00
25065ea703 Merge remote-tracking branch 'origin/master' into debian 2023-07-06 15:39:29 +02:00
bb48fa187f activate dotglob permanently 2023-07-06 15:39:11 +02:00
fd9dba9f12 Merge remote-tracking branch 'origin/master' into debian 2023-07-06 13:00:17 +02:00
ba623040b9 - minor semantic changes (semicolons at the end of the line)
- added convenient updateSystem command
2023-07-06 12:51:55 +02:00
3d740f1c3b Merge branch 'master' into debian 2023-06-02 16:03:05 +02:00
8358af1077 - added useful shell features
- cosmetics: whitespace
2023-06-02 15:54:37 +02:00
4cab17e726 - added shebang line, so nano etc. get the syntax highlighting right
- added function to automatically update flatpaks
2023-06-02 15:52:22 +02:00
29 changed files with 199 additions and 2560 deletions

2
.gitignore vendored
View File

@ -1,3 +1,3 @@
/backup /backup
output.txt output.txt
.bash_aliases_local /.sublime

View File

@ -1,8 +0,0 @@
{
"folders":
[
{
"path": ".."
}
]
}

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,5 @@
#!/usr/bin/env bash
if [ "$TERM" == 'xterm-kitty' ]; then if [ "$TERM" == 'xterm-kitty' ]; then
alias ssh='kitty +kitten ssh' alias ssh='kitty +kitten ssh'
alias diff='kitty +kitten diff' alias diff='kitty +kitten diff'
@ -17,6 +19,7 @@ alias rsync_backup="rsync $DEFAULT_RSYNC --checksum --times --group --owner --de
alias rsync_move="rsync $DEFAULT_RSYNC --checksum --remove-source-files" alias rsync_move="rsync $DEFAULT_RSYNC --checksum --remove-source-files"
alias rsync_update="rsync $DEFAULT_RSYNC --update --times" alias rsync_update="rsync $DEFAULT_RSYNC --update --times"
alias rsync_copy="rsync $DEFAULT_RSYNC --ignore-times" alias rsync_copy="rsync $DEFAULT_RSYNC --ignore-times"
alias copy_link='cp --no-dereference --recursive --preserve=all --link' # not --force to make it optional
alias off='systemctl poweroff' alias off='systemctl poweroff'
alias nnn='nnn -dHrR' alias nnn='nnn -dHrR'
alias nn='n -dHrR' alias nn='n -dHrR'
@ -27,16 +30,56 @@ alias mountdrive='udisksctl mount -b'
alias unmountdrive='udisksctl unmount -b' alias unmountdrive='udisksctl unmount -b'
alias fssizes='df -kh --output=size,used,avail,pcent,target | sort -hr' alias fssizes='df -kh --output=size,used,avail,pcent,target | sort -hr'
alias dirsizes='du -kh --apparent-size --max-depth=1 | sort -hr' alias dirsizes='du -kh --apparent-size --max-depth=1 | sort -hr'
# sed -ie 's/Beispiel/Ersetzung/' *.xml
# sed -Eie 's/(Beispiel)/\1Anhang/' *.xml
alias start_x11_vnc="x11vnc -many -display :0 -no6 -rfbport 5900 -auth /var/run/lightdm/root/:0 -rfbauth $HOME/.vnc/passwd"
rsyncLink() {
source=$1;
linkSource="$(realpath $source)";
linkSource=${linkSource%/}; # cut off trailing "/"
shift;
dest=$1;
shift;
rsync $DEFAULT_RSYNC --one-file-system --link-dest=$linkSource $source $dest $*;
}
updateSystem() {
executeAndNotify "doUpdateSystem $1" "system updated" "system update failed"
}
doUpdateSystem() {
updatePackages $1;
updateFlatpak $1;
}
updateFlatpak() {
noconfirm=
if [[ $1 == "-y" ]]; then
noconfirm="--assumeyes";
fi
executeAndNotify "doUpdateFlatpak $noconfirm" "flatpaks updated" "flatpak update failed";
}
doUpdateFlatpak() {
flatpak update $1;
flatpak remove --unused $1;
}
# executes command and notifies upon failure # executes command and notifies upon failure
execute() { execute() {
dir="$(pwd)"; dir="$(pwd)";
dir=${dir##*/}; dir=${dir##*/};
if [ -n "$2" ]; then if [[ -n "$2" ]]; then
errLog=$2 errLog=$2;
else else
errLog="execution of \"$1\" failed" errLog="execution of \"$1\" failed";
fi fi
if ! $1; then if ! $1; then
@ -49,33 +92,33 @@ execute() {
# executes command and notifies upon success or failure # executes command and notifies upon success or failure
executeAndNotify () { executeAndNotify () {
dir="$(pwd)"; dir="$(pwd)";
dir=${dir##*/}; dir=${dir##*/}; # cut off previous path (/path/to/foo.txt -> foo.txt)
if [ -n "$2" ]; then if [[ -n "$2" ]]; then
winLog=$2 winLog=$2;
else else
winLog="execution of \"$1\" succeeded" winLog="execution of \"$1\" succeeded";
fi fi
if ! execute "$1" "$3"; then # arguments in quotes so they are interpreted as ONE argument each by execute() if ! execute "$1" "$3"; then # arguments in quotes so they are interpreted as ONE argument each by execute()
return 1; return 1;
fi fi
notifyInfo "$dir: $winLog" notifyInfo "$dir: $winLog";
} }
# find file but don't print errors (e.g. can't access directory etc.) # find file but don't print errors (e.g. can't access directory etc.)
finds () { finds () {
find $* 2>/dev/null find $* 2>/dev/null;
} }
# sends a desktop-notification with an icon signalling an error # sends a desktop-notification with an icon signalling an error
notifyError () { notifyError () {
notify-send "$1" --icon=data-warning notify-send "$1" --icon=data-warning;
} }
# sends a desktop-notification with an icon signalling a simple information # sends a desktop-notification with an icon signalling a simple information
notifyInfo () { notifyInfo () {
notify-send "$1" --icon=preferences-desktop-notification notify-send "$1" --icon=preferences-desktop-notification;
} }

View File

@ -1,6 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
updateSystem() {
updatePackages() {
noconfirm= noconfirm=
if [[ $1 == "-y" ]]; then if [[ $1 == "-y" ]]; then
noconfirm="--assume-yes" noconfirm="--assume-yes"
@ -9,11 +10,11 @@ updateSystem() {
if [[ $2 == "--full" ]]; then if [[ $2 == "--full" ]]; then
full="full-" full="full-"
fi fi
executeAndNotify "doUpdateSystem $noconfirm $full" "system updated" "system update failed"; executeAndNotify "doUpdatePackages $noconfirm $full" "system updated" "system update failed";
} }
doUpdateSystem() { doUpdatePackages() {
sudo apt update; sudo apt update;
sudo apt ${2}upgrade $1; sudo apt ${2}upgrade $1;
sudo apt autoremove $1; sudo apt autoremove $1;

View File

@ -2,6 +2,9 @@
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples # for examples
set -o pipefail
# set -u
# If not running interactively, don't do anything # If not running interactively, don't do anything
if [[ $- != *i* ]]; then if [[ $- != *i* ]]; then
return return
@ -43,6 +46,8 @@ shopt -s checkwinsize
# match all files and zero or more directories and subdirectories. # match all files and zero or more directories and subdirectories.
shopt -s globstar shopt -s globstar
shopt -s dotglob
# make less more friendly for non-text input files, see lesspipe(1) # make less more friendly for non-text input files, see lesspipe(1)
if [ -x /usr/bin/lesspipe ]; then if [ -x /usr/bin/lesspipe ]; then
eval "$(SHELL=/bin/sh lesspipe)" eval "$(SHELL=/bin/sh lesspipe)"
@ -181,26 +186,29 @@ colours() {
# ex - archive extractor # ex - archive extractor
# usage: ex <file> # usage: ex <file>
ex () ex() {
{ if [[ ! -f "$1" ]]; then
if [ -f $1 ] ; then echo "'$1' is not a valid file"
case $1 in return 1;
*.tar.bz2) tar xjf $1 ;; fi
*.tar.gz) tar xzf $1 ;; # FIXME 7z kann (theoretisch) tar
*.bz2) bunzip2 $1 ;; outdir=${1%.*}
*.rar) unrar x $1 ;; case "$1" in
*.gz) gunzip $1 ;; *.tar.bz2 | *.tbz | *.tbz2)
*.tar) tar xf $1 ;; tar xjf $1 -C $outdir;;
*.tbz2) tar xjf $1 ;; *.tar.gz | *.tgz)
*.tgz) tar xzf $1 ;; tar xzf $1 -C $outdir;;
*.zip) unzip $1 ;; *.tar)
*.Z) uncompress $1;; tar xf $1 -C $outdir;;
*.7z) 7z x $1 ;; *.7z | *.zip | *.gz | *.bz | *.bz2)
*) echo "'$1' cannot be extracted via ex()" ;; 7z x -o$outdir $1;;
esac *.rar)
else unrar x $1;;
echo "'$1' is not a valid file" *.Z)
fi uncompress $1;;
*)
echo "'$1' cannot be extracted via ex()";;
esac
} }
# BEGIN_KITTY_SHELL_INTEGRATION # BEGIN_KITTY_SHELL_INTEGRATION

View File

@ -44,4 +44,5 @@
"use_tab_stops": false, "use_tab_stops": false,
"word_wrap": true, "word_wrap": true,
"wrap_width": 120, "wrap_width": 120,
"index_files": true,
} }

View File

@ -63,10 +63,6 @@ PasswordAuthentication no
# Change to yes to enable challenge-response passwords (beware issues with # Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads) # some PAM modules and threads)
# FIXME! outdated/ replaced by KbdInteractiveAuthentication?
ChallengeResponseAuthentication no
# Change to no to disable s/key passwords
KbdInteractiveAuthentication no KbdInteractiveAuthentication no
# Kerberos options # Kerberos options
@ -86,7 +82,7 @@ KbdInteractiveAuthentication no
# be allowed through the KbdInteractiveAuthentication and # be allowed through the KbdInteractiveAuthentication and
# PasswordAuthentication. Depending on your PAM configuration, # PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via KbdInteractiveAuthentication may bypass # PAM authentication via KbdInteractiveAuthentication may bypass
# the setting of "PermitRootLogin without-password". # the setting of "PermitRootLogin prohibit-password".
# If you just want the PAM account and session checks to run without # If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication # PAM authentication, then enable this but set PasswordAuthentication
# and KbdInteractiveAuthentication to 'no'. # and KbdInteractiveAuthentication to 'no'.
@ -122,10 +118,10 @@ PrintMotd no # pam does that
AcceptEnv LANG LC_* AcceptEnv LANG LC_*
# override default of no subsystems # override default of no subsystems
# DEACTIVATED because no need for sftp and differences between debian and arch
# debian # debian
Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp /usr/lib/openssh/sftp-server
# arch # arch
# DEACTIVATED because no need for sftp and differences between debian and arch
# Subsystem sftp /usr/lib/ssh/sftp-server # Subsystem sftp /usr/lib/ssh/sftp-server
# Example of overriding settings on a per-user basis # Example of overriding settings on a per-user basis

View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
source=${1%/}; # cut off trailing "/"
tar cfv $source.tar $source && xz $source.tar;

View File

@ -1,35 +1,41 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
source /sync/home_external/.bash_aliases source /sync/scripts/backup_resources.sh
# FSFIXME expand_aliases still needed?
shopt -s expand_aliases # make aliases work shopt -s expand_aliases # make aliases work
############################### ###############################
### update local backup dir ### ### update local backup dir ###
############################### ###############################
BACKUP_DIR=/sync/backup BACKUP_DIR=/sync/backup
ensureDirectory $BACKUP_DIR
BACKUP_DIR_HOME=$BACKUP_DIR/home BACKUP_DIR_HOME=$BACKUP_DIR/home
if [[ !($HOME/.bash_aliases_local -ef $BACKUP_DIR_HOME/.bash_aliases_local) ]]; then ensureDirectory $BACKUP_DIR_HOME
ln $HOME/.bash_aliases_local $BACKUP_DIR_HOME/.bash_aliases_local
fi backupDirectory $HOME/.ssh/ $BACKUP_DIR_HOME/.ssh/
rsync_backup --link-dest="$HOME/.ssh/" $HOME/.ssh/ $BACKUP_DIR_HOME/.ssh/
BACKUP_DIR_ROOT=$BACKUP_DIR/root/etc BACKUP_DIR_ROOT=$BACKUP_DIR/root/etc
sd rsync_backup --link-dest="/etc/ddclient/" /etc/ddclient/ $BACKUP_DIR_ROOT/ddclient/ ensureRootDirectory $BACKUP_DIR_ROOT
sd rsync_backup --link-dest="/etc/letsencrypt/" /etc/letsencrypt/ $BACKUP_DIR_ROOT/letsencrypt/
sd rsync_backup --link-dest="/etc/nginx/" /etc/nginx/ $BACKUP_DIR_ROOT/nginx/
sd rsync_backup --link-dest="/etc/ssh/" /etc/ssh/ $BACKUP_DIR_ROOT/ssh/
sd rsync_backup --link-dest="/etc/wireguard/" /etc/wireguard/ $BACKUP_DIR_ROOT/wireguard/
if [[ !(/etc/ddclient.conf -ef $BACKUP_DIR_ROOT/ddclient.conf) ]]; then
ln /etc/ddclient.conf $BACKUP_DIR_ROOT/ddclient.conf
fi
sd rsync_backup /etc/hosts $BACKUP_DIR_ROOT/
sd rsync_backup /etc/ddclient.conf $BACKUP_DIR_ROOT/
backupRootDirectory /etc/ddclient/ $BACKUP_DIR_ROOT/ddclient/
backupRootDirectory /etc/letsencrypt/ $BACKUP_DIR_ROOT/letsencrypt/
backupRootDirectory /etc/nginx/ $BACKUP_DIR_ROOT/nginx/
backupRootDirectory /etc/ssh/ $BACKUP_DIR_ROOT/ssh/
backupRootDirectory /etc/wireguard/ $BACKUP_DIR_ROOT/wireguard/
backupRootDirectory /etc/docker/daemon.json $BACKUP_DIR_ROOT/docker/
##################### #####################
### upload backup ### ### upload backup ###
##################### #####################
if [[ "$1" == "--noupload" ]]; then
exit 0;
fi
sd rsync_backup -e "ssh -i /home/edi/.ssh/id_ed25519" --filter="P /home/docker" /sync/backup/ fabian@garrus:/citadel/backup/edi/ sd rsync_backup -e "ssh -i /home/edi/.ssh/id_ed25519" --filter="P /home/docker" /sync/backup/ fabian@garrus:/citadel/backup/edi/
sd rsync_backup -e "ssh -i /home/edi/.ssh/id_ed25519" /home/edi/docker/ fabian@garrus:/citadel/backup/edi/home/docker/ sd rsync_backup -e "ssh -i /home/edi/.ssh/id_ed25519" /home/edi/docker/ fabian@garrus:/citadel/backup/edi/home/docker/
echo "Note: remember to keep /citadel in sync!"

View File

@ -1,22 +1,22 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
source /sync/home_external/.bash_aliases source /sync/scripts/backup_resources.sh
# FSFIXME expand_aliases still needed?
shopt -s expand_aliases # make aliases work shopt -s expand_aliases # make aliases work
############################### ###############################
### update local backup dir ### ### update local backup dir ###
############################### ###############################
BACKUP_DIR=/sync/backup BACKUP_DIR=/sync/backup
ensureDirectory $BACKUP_DIR
BACKUP_DIR_HOME=$BACKUP_DIR/home BACKUP_DIR_HOME=$BACKUP_DIR/home
if [[ !($HOME/.bash_aliases_local -ef $BACKUP_DIR_HOME/.bash_aliases_local) ]]; then ensureDirectory $BACKUP_DIR_HOME
ln $HOME/.bash_aliases_local $BACKUP_DIR_HOME/.bash_aliases_local
fi
BACKUP_DIR_ROOT=$BACKUP_DIR/root/etc BACKUP_DIR_ROOT=$BACKUP_DIR/root/etc
rsync_backup --link-dest="/etc/ssh/" /etc/ssh/ $BACKUP_DIR_ROOT/ssh/ ensureRootDirectory $BACKUP_DIR_ROOT
backupRootDirectory /etc/ssh/ $BACKUP_DIR_ROOT/ssh/
if [[ !(-d $BACKUP_DIR_ROOT/udev/rules.d) ]]; then if [[ !(-d $BACKUP_DIR_ROOT/udev/rules.d) ]]; then
mkdir $BACKUP_DIR_ROOT/udev/rules.d mkdir $BACKUP_DIR_ROOT/udev/rules.d
fi fi
@ -24,14 +24,15 @@ if [[ !(/etc/udev/rules.d/69-hdparm.rules -ef $BACKUP_DIR_ROOT/udev/rules.d/69-h
ln /etc/udev/rules.d/69-hdparm.rules $BACKUP_DIR_ROOT/udev/rules.d/69-hdparm.rules ln /etc/udev/rules.d/69-hdparm.rules $BACKUP_DIR_ROOT/udev/rules.d/69-hdparm.rules
fi fi
backupRootDirectory /etc/ssh/ $BACKUP_DIR_ROOT/ssh/
##################### #####################
### upload backup ### ### upload backup ###
##################### #####################
echo $'upload of backup still manual for now.\nplease execute the following commands:' echo 'upload of backup still manual for now.\nplease execute the following commands:'
echo 'su garrus' echo 'su garrus'
echo 'sd rsync_backup $BACKUP_DIR/ /citadel/backup/garrus/' echo "sd rsync_backup $BACKUP_DIR/ /citadel/backup/garrus/"
exit 0 exit 0
su garrus su garrus

View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
set -euo pipefail
source /sync/home_external/.bash_aliases
shopt -s expand_aliases # make aliases work
backupRootDirectory() {
ensureRootDirectory $2
sd rsync_backup $1 $2
}
backupDirectory() {
ensureDirectory $2
rsync_backup $1 $2
}
ensureRootDirectory() {
ensureDirectory $1
sudo chown root:root $1
}
ensureDirectory() {
if [[ ! -d $1 ]]; then
mkdir -p $1
fi
}

View File

@ -1,24 +1,27 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
source /sync/home_external/.bash_aliases source /sync/scripts/backup_resources.sh
# FSFIXME expand_aliases still needed?
shopt -s expand_aliases # make aliases work shopt -s expand_aliases # make aliases work
############################### ###############################
### update local backup dir ### ### update local backup dir ###
############################### ###############################
BACKUP_DIR=/sync/backup BACKUP_DIR=/sync/backup
ensureDirectory $BACKUP_DIR
BACKUP_DIR_HOME=$BACKUP_DIR/home BACKUP_DIR_HOME=$BACKUP_DIR/home
if [[ !($HOME/.bash_aliases_local -ef $BACKUP_DIR_HOME/.bash_aliases_local) ]]; then ensureDirectory $BACKUP_DIR_HOME
ln $HOME/.bash_aliases_local $BACKUP_DIR_HOME/.bash_aliases_local
fi
rsync_backup --link-dest="$HOME/.ssh/" $HOME/.ssh/ $BACKUP_DIR_HOME/.ssh/
backupDirectory $HOME/.ssh/ $BACKUP_DIR_HOME/.ssh/
##################### #####################
### upload backup ### ### upload backup ###
##################### #####################
if [[ "$1" == "--noupload" ]]; then
exit 0;
fi
sd rsync_backup -e "ssh -i /home/fabian/.ssh/id_ed25519" $BACKUP_DIR/ fabian@garrus:/citadel/backup/shepard/ sd rsync_backup -e "ssh -i /home/fabian/.ssh/id_ed25519" $BACKUP_DIR/ fabian@garrus:/citadel/backup/shepard/

View File

@ -0,0 +1,4 @@
#!/usr/bin/env bash
source=$1;
archive=${source%.xz}; # cut off trailing ".xz"
unxz $source && tar xfv $archive

View File

@ -11,6 +11,8 @@ replacements[':']='_';
replacements["'"]='_'; replacements["'"]='_';
replacements['(']='_'; replacements['(']='_';
replacements[')']='_'; replacements[')']='_';
replacements['[']='_';
replacements[']']='_';
while [[ $# > 0 ]]; do while [[ $# > 0 ]]; do
replacements["$1"]="$2"; replacements["$1"]="$2";
shift 2; shift 2;

View File

@ -2,10 +2,12 @@
set -euo pipefail set -euo pipefail
sshMount () { sshMount () {
serverUser=$1;
serverHost=$2;
shift 2;
args=($@) args=($@)
args=(${args[@]:2})
for ((i=0; i < ${#args[@]}; i=i + 2)); do for ((i=0; i < ${#args[@]}; i=i + 2)); do
sshfs $1@$2:/citadel/${args[$i]}/ /home/fabian/${args[$i + 1]}/ -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=8 sshfs ${serverUser}@${serverHost}:/citadel/${args[$i]}/ $HOME/${args[$i + 1]}/ -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=8
done done
} }

View File

@ -5,7 +5,7 @@ set -euo pipefail
dir="$(pwd)" dir="$(pwd)"
dest=${dir%/*}/${dir##*/}_reencode dest=${dir%/*}/${dir##*/}_reencode
if [[ !(-d $dest) ]]; then if [[ !(-d $dest) ]]; then
mkdir $dest mkdir "$dest"
fi fi
for file in ./*.$1; do for file in ./*.$1; do

View File

@ -21,7 +21,7 @@ fi
dir="$(pwd)" dir="$(pwd)"
dest=${dir%/*}/${dir##*/}_reencode dest=${dir%/*}/${dir##*/}_reencode
if [[ !(-d $dest) ]]; then if [[ !(-d $dest) ]]; then
mkdir $dest mkdir "$dest"
fi fi
for file in ./*.m4a; do for file in ./*.m4a; do

25
scripts/transcode_flac.sh Executable file
View File

@ -0,0 +1,25 @@
#!/usr/bin/env bash
set -euo pipefail
# evaluate options through given arguments
file_suffix='wav'
map=
while [[ $# > 0 ]]; do
case $1 in
-t | --type) file_suffix=$2; shift 2;;
-map ) map='-map 0:0'; shift;;
* ) break ;; # Anything else stops command line processing.
esac
done
# ensure existence of destination folder
dir="$(pwd)"
dest=${dir%/*}/${dir##*/}_flac
if [[ !(-d $dest) ]]; then
mkdir "$dest"
fi
for file in ./*.$file_suffix; do
echo "ffmpeg -i '$file' -c:a flac $map '$dest/${file%$file_suffix}flac'";
ffmpeg -i "$file" -c:a flac $map "$dest/${file%$file_suffix}flac";
done

View File

@ -16,7 +16,7 @@ done
dir="$(pwd)" dir="$(pwd)"
dest=${dir%/*}/${dir##*/}_ogg dest=${dir%/*}/${dir##*/}_ogg
if [[ !(-d $dest) ]]; then if [[ !(-d $dest) ]]; then
mkdir $dest mkdir "$dest"
fi fi
for file in ./*.$file_suffix; do for file in ./*.$file_suffix; do