Skip to content

Instantly share code, notes, and snippets.

@entrptaher
Created September 18, 2022 00:29
Show Gist options
  • Save entrptaher/5a6795f4d66a94ebf0b683f663166e1b to your computer and use it in GitHub Desktop.
Save entrptaher/5a6795f4d66a94ebf0b683f663166e1b to your computer and use it in GitHub Desktop.
Sync your .files to OneDrive or other cloud storage.
#!/bin/bash
onedrive=`dirname $0`
zsh_dir=.oh-my-zsh #you may need modify this line
readonly onedrive
readonly zsh_dir
upload_ssh() {
od_ssh=$onedrive/.ssh
lc_ssh=$HOME/.ssh
mkdir -p $od_ssh/
rsync -avzu --delete --progress -h $lc_ssh/ $od_ssh/ --exclude known_hosts
}
upload_zsh() {
od_zsh=$onedrive/.zsh
mkdir -p $od_zsh/
rm -rf $od_zsh/*
cp $HOME/.zshrc $od_zsh/
tar -czf zsh_dir.tar.gz -C $HOME $zsh_dir --totals
cp zsh_dir.tar.gz $od_zsh/
rm zsh_dir.tar.gz
}
upload_aria2() {
od_aria2=$onedrive/.aria2
lc_aria2=$HOME/.aria2
mkdir -p $od_aria2/
rsync -avzu --delete --progress -h $lc_aria2/ $od_aria2/
}
download_aria2() {
od_aria2=$onedrive/.aria2
lc_aria2=$HOME/.aria2
mkdir -p $lc_aria2/
rsync -avzu --delete --progress -h $od_aria2/ $lc_aria2/
}
download_ssh() {
od_ssh=$onedrive/.ssh
lc_ssh=$HOME/.ssh
count=`ls $od_ssh | wc -w`
if [ "$count" = "0" ];
then
echo "OneDrive does not contain any backup files, please upload first."
exit 2
else
mkdir -p $lc_ssh/
rsync -avzu --delete --progress -h $od_ssh/ $lc_ssh/ --exclude known_hosts
chmod 600 $lc_ssh/*
fi
}
download_zsh() {
od_zsh=$onedrive/.zsh
count=`ls $od_zsh | wc -w`
if [ "$count" = "0" ];
then
echo "OneDrive does not contain any backup files, please upload first."
exit 2
else
cp $od_zsh/.zshrc $HOME/.zshrc
cp $od_zsh/zsh_dir.tar.gz $HOME/
rm -rf $HOME/$zsh_dir
tar -xzf $HOME/zsh_dir.tar.gz -C $HOME --totals
rm $HOME/zsh_dir.tar.gz
fi
}
upload_git() {
od_git=$onedrive/.git
lc_git=$HOME/.gitconfig
mkdir -p $od_git/
cp $lc_git $od_git/
}
download_git() {
od_git=$onedrive/.git/.gitconfig
cp $od_git $HOME
}
upload() {
if [ $1 = "ssh" ]
then
upload_ssh
elif [ $1 = "zsh" ]
then
upload_zsh
elif [ $1 = "aria2" ]
then
upload_aria2
elif [ $1 = "git" ]
then
upload_git
else
exit 2
fi
echo "Upload done."
}
download() {
if [ $1 = "ssh" ]
then
download_ssh
elif [ $1 = "zsh" ]
then
download_zsh
elif [ $1 = "aria2" ]
then
download_aria2
elif [ $1 = "git" ]
then
download_git
else
exit 2
fi
echo "Download done."
}
while getopts "u:d:" optname
do
case "$optname" in
"u")
upload $OPTARG
;;
"d")
download $OPTARG
;;
esac
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment