Skip to content

Instantly share code, notes, and snippets.

@Lathanao
Last active March 18, 2024 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Lathanao/501a24e0f328d62283a8507ac9b89151 to your computer and use it in GitHub Desktop.
Save Lathanao/501a24e0f328d62283a8507ac9b89151 to your computer and use it in GitHub Desktop.
Obsidian backup on Google Drive
#!/bin/bash
# Backup Obsidian vault (MIT License)
# by Lathanao (last update: 2023/12/01)
PATH_OBSIDIAN="$HOME/Documents/Obsidian_Vault"
PATH_GDRIVE='/run/user/1000/gvfs/google-drive:host=gmail.com,user=you/xxxxxxxxxx'
PASS="password_for_the_backup"
SLUG=$(date "+%Y%m%d_%H%M%S")_$(whoami)_obsidian_vault
LOG_DIR=/var/log/usercron
LOG_FILE=/var/log/usercron/save_obsidian_vault.log
## CREATE LOG DIRECTORY AND FILE
################################################################################
if [[ ! -d "$LOG_DIR" ]];then
sudo mkdir -p $LOG_DIR
sudo chmod -R 0700 $LOG_DIR
sudo chown -R $USER:$USER $LOG_DIR
fi
if [[ ! -f "$IP_LOG_FILE" ]];then
sudo touch $LOG_FILE
sudo chmod 0700 $LOG_FILE
sudo chown $USER:$USER $LOG_FILE
fi
## MOUNT THE GOOGLE DRIVE DISK
################################################################################
echo -e "${green}~:> Gio mount${reset}"
NB_INFO_GIO=$(gio info $GDRIVE_ACCOUNT | wc -l)
echo -e "${green}~:> $NB_INFO_GIO line returned from gio info${reset}"
if [ "$NB_INFO_GIO" -eq 0 ]
then
gio mount $GDRIVE_ACCOUNT
fi
## ZIP AND SEND TO GDRIVE
################################################################################
cd $PATH_OBSIDIAN
cd ..
echo -e "${green}~:> zip $PATH_OBSIDIAN${reset}"
zip -P $PASS -rq $SLUG.zip $PATH_OBSIDIAN
echo -e "${blue}~:> gio copy --progress $SLUG.zip On Google Drive${reset}"
gio copy --progress ./$SLUG.zip $PATH_GDRIVE
echo -e "${red}~:> DEBUG: Current backup file save on $PWD/$SLUG.zip${reset}"
MB=$(echo "scale=2; $(wc -c $PWD/$SLUG.zip | awk '{print $1}') / 1024 / 1024" | bc)
NB_FILES=$(find $PATH_OBSIDIAN -type f -name '*.md' | wc -l)
echo -e "${green}~:> $MB mb of data to save${reset}"
echo -e "${green}~:> $NB_FILES of files to save${reset}"
## LOG
################################################################################
LOG_MSG="$NB_FILES files for $MB Mb saved in $SLUG.zip then sent on $GDRIVE_ACCOUNT"
DATE=$(date "+%Y-%m-%d %T")
echo -e "${green}~:> $DATE $LOG_MSG in $LOG_FILE ${reset} "
echo -e "${green}~:> $DATE $LOG_MSG in $LOG_FILE ${reset} "
echo $DATE $LOG_MSG>> $LOG_FILE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment