Архив

Публикации с меткой ‘bash’

Скрипт для загрузки файлов из Google Drive из консоли.
Код скрипта:

#!/bin/bash
 
url=$1
filename=$2
 
[ -z "$url" ] && echo A URL or ID is required first argument && exit 1
 
fileid=""
declare -a patterns=("s/.*\/file\/d\/\(.*\)\/.*//p" "s/.*id\=\(.*\)//p" "s/\(.*\)//p")
for i in "${patterns[@]}"
do
   fileid=$(echo $url | sed -n $i)
   [ ! -z "$fileid" ] && break
done
 
[ -z "$fileid" ] && echo Could not find Google ID && exit 1
 
echo File ID: $fileid 
 
tmp_file="$filename.$$.file"
tmp_cookies="$filename.$$.cookies"
tmp_headers="$filename.$$.headers"
 
url='https://docs.google.com/uc?export=download&id='$fileid
echo Downloading: "$url > $tmp_file"
wget --save-cookies "$tmp_cookies" -q -S -O - $url 2> "$tmp_headers" 1> "$tmp_file"
 
if [[ ! $(find "$tmp_file" -type f -size +10000c 2>/dev/null) ]]; then
   confirm=$(cat "$tmp_file" | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*//p')
fi
 
if [ ! -z "$confirm" ]; then
   url='https://docs.google.com/uc?export=download&id='$fileid'&confirm='$confirm
   echo Downloading: "$url > $tmp_file"
   wget --load-cookies "$tmp_cookies" -q -S -O - $url 2> "$tmp_headers" 1> "$tmp_file"
fi
 
[ -z "$filename" ] && filename=$(cat "$tmp_headers" | sed -rn 's/.*filename=\"(.*)\".*//p')
[ -z "$filename" ] && filename="google_drive.file"
 
echo Moving: "$tmp_file > $filename"
 
mv "$tmp_file" "$filename"
 
rm -f "$tmp_cookies" "$tmp_headers"
 
echo Saved: "$filename"
echo DONE!
 
exit 0

Скачиваем скрипт и делаем его исполняемым:

sudo wget -O /usr/sbin/gdrivedl 'https://f.mjh.nz/gdrivedl'
sudo chmod +x /usr/sbin/gdrivedl

Варианты использования:

gdrivedl https://drive.google.com/open?id=1sNhrr2u6n48vb5xuOe8P9pTayojQoOc_
gdrivedl https://drive.google.com/file/d/1sNhrr2u6n48vb5xuOe8P9pTayojQoOc_/view?usp=sharing
gdrivedl 1sNhrr2u6n48vb5xuOe8P9pTayojQoOc_
gdrivedl https://drive.google.com/open?id=1sNhrr2u6n48vb5xuOe8P9pTayojQoOc_ /tmp/my_file.rar

Источник: https://www.matthuisman.nz/2019/01/download-google-drive-files-wget-curl.html

Зеркало на GitHub: https://github.com/matthuisman/files.matthuisman.nz/blob/master/gdrivedl

Зеркало у себя: gdrivedl

Categories: Unix Tags:
9 ноября 2018 Нет комментариев
#!/bin/bash
cd /var/www/backup/
d=$(date +"%Y_%m_%d")
mysqldump --opt -udbuser -pdbpassword dbname | gzip -c -9 > site.ru_$d.sql.gz
Categories: Unix Tags:
24 августа 2018 2 комментария
find ./ -type f -exec sh -c 'cat /dev/null > {}' \;
Categories: Linux Tags:

Скрипт (спецсимволы в паролях экранировать):

#!/bin/bash
cd /var/www/backup/
#local
mysqldump --opt -udbuser -pdbpassword dbname | gzip -c -9 > site.ru.sql.gz
tar -czf site.ru.tar.gz ../site.ru
#gdrive
GDRIVE=/root/gdrive
for f in *.gz
do
    $GDRIVE list | grep $f | awk '{print $1}' | xargs -I {} sh -c "$GDRIVE delete {}"
    $GDRIVE upload $f
done

Более простой не универсальный вариант:

#!/bin/bash
#local
mysqldump --opt -udbuser -pdbpassword dbname | gzip -c -9 > /var/www/backup/site.ru.sql.gz
tar -czf /var/www/backup/site.ru.tar.gz /var/www/site.ru/
#gdrive
/root/gdrive list | grep site.ru.sql.gz | awk '{print $1}' | xargs -I {} sh -c '/root/gdrive delete {}'
/root/gdrive upload /var/www/backup/site.ru.sql.gz
/root/gdrive list | grep site.ru.tar.gz | awk '{print $1}' | xargs -I {} sh -c '/root/gdrive delete {}'
/root/gdrive upload /var/www/backup/site.ru.tar.gz

Информация о GDrive (установка и использование): https://github.com/prasmussen/gdrive

См. также: cron резервное копирование файлов и базы данных сайта с выгрузкой на удаленный ftp

Categories: Unix Tags: ,
18 сентября 2017 Нет комментариев

Для пакетного изменения кодировки из windows-1251 в uft-8.
Изменить кодировку всех *.php файлов в папке:

find . -name "*.php" -exec iconv -f WINDOWS-1251 -t UTF-8 {} -o tmp \; -exec mv tmp {} \;

Изменить кодировку просто всех файлов в папке:

find . -type f -exec iconv -f WINDOWS-1251 -t UTF-8 {} -o tmp \; -exec mv tmp {} \;
Categories: Unix Tags: ,
11 сентября 2017 1 комментарий

Скрипт:
в пароле для mysql спецсимволы нужно экранировать, например \)

#!/bin/bash
tar -czf /var/www/backup/site.ru.tar.gz /var/www/site.ru/
mysqldump --opt -udbuser -pdbpassword dbname | gzip -c -9 > /var/www/backup/site.ru.sql.gz
lftp -c 'open -e "mput -O ftpdir/ /var/www/backup/*.gz " -u ftpuser,ftppassword ftpserver exit'

Задание cron (будет выполняться в 2:30 каждый день):

crontab -e
30 2 * * * /usr/bin/perl /var/www/backup/site.ru.sh >> /var/www/backup/site.ru.log 2>&1

https://www.frameworks.su/article/rezervnoe_kopirovanie_sayta_s_pomoshchyu_cron

См. также: Резервное копирование файлов и базы данных сайта с выгрузкой на Google Drive

Categories: Unix Tags: ,

Для удаления ^M (DOS перевод строки):

tr -d \r < dosfile > newfile
Categories: Unix Tags: