Last active
March 18, 2024 13:57
-
-
Save Lathanao/501a24e0f328d62283a8507ac9b89151 to your computer and use it in GitHub Desktop.
Obsidian backup on Google Drive
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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