Общие вопросы > Полезные советы, инструкции
Быстрая передача файлов через интернет.
totiks2012:
Бывают случаи когда нужно передать файл достаточно большого размера, но через облако заходить муторно, и требует затрат по времени, нашёл интересный способ вот тут https://dzen.ru/a/ZcLeiJlTzW1wUC4f , автор предложил использовать для этого https://transfer.sh/ , а так же скрипт, но по окончанию работы его скрипта не выдаётся адрес по которому следует скачать переданный файл, либо я что-то не до понял, по этому предлагаю доработанный скрипт в который добавил возможность по окончанию работы скрипта , увидеть ссылку по которой можно этот файл скачать.
как исползовать?
нужен xsel, pv , curl
адресс сохраняется в HOME/.config/ADR
подвешиваем на комбинацию клавиш этот скрипт,копируем желаемый файл в буфер, если файл большой наслаждаемся прогресс баром, по меньше тоже но не успеваем насладится, ну и дальше файл отсылается в https://transfer.sh получаем адрес скачивания в терминале, а также в файл по пути HOME/.config/ADR
--------------------------------------------
вот улучшеный код доработанного скрипта (спасибо k0l0p0k идеи огонь)
--------------------------------------------
--- Код ---
#!/bin/bash
#set -x
LOG_FILE=$HOME/.config/ADR
# Проверяем, существует ли файл $LOG_FILE, и создаем его, если он не существует
[ ! -f $LOG_FILE ] && > $LOG_FILE
file_dir=$(xsel -b)
filename=$(basename "$file_dir")
mkdir -p /tmp
#tar -czvf /tmp/"$filename.tar.gz" "$file_dir"
# Создаем несжатый архив
tar -cf /tmp/$filename.tar "$file_dir"
# Отображаем прогресс сжатия
pv /tmp/$filename.tar | gzip > /tmp/$filename.tar.gz
response=$(curl --upload-file /tmp/$filename.tar.gz "https://transfer.sh/$filename.tar.gz")
echo " "
echo "-------------------------------------------------------------"
echo " "
#echo "Адрес файла: $response"
echo "Адрес файла: $response" | tee -a $LOG_FILE
echo " "
echo "-------------------------------------------------------------"
echo " "
rm /tmp/$filename.tar.gz
echo "чтоб закончить ввод"
read ex
--- Конец кода ---
ниже с чего начиналось тоже оставлю может кому интересно последить за развитием сюжета :)
--- Код ---
$ ./trsgz <полный путь до файла>
--- Конец кода ---
этот создаёт zip архив
--- Код ---
#!/bin/bash
set -x
SIZE=1000000
if [ -n "$(find "$1" -prune -size +"$SIZE"c)" ]; then
filename=$(basename "$1")
mkdir -p /tmp
zip -r /tmp/"$filename.zip" "$1"
response=$(curl --upload-file /tmp/$filename.zip "https://transfer.sh/$filename.zip")
echo "Адрес файла: $response"
rm /tmp/$filename.zip
else
filename=$(basename "$1")
response=$(curl --upload-file "$1" "https://transfer.sh/$filename")
echo "Адрес файла: $response"
fi
--- Конец кода ---
этот создаёт tar.gz архив
--- Код ---
#!/bin/bash
set -x
SIZE=1000000
if [ -n "$(find "$1" -prune -size +"$SIZE"c)" ]; then
filename=$(basename "$1")
mkdir -p /tmp
tar -czvf /tmp/"$filename.tar.gz" "$1"
response=$(curl --upload-file /tmp/$filename.tar.gz "https://transfer.sh/$filename.tar.gz")
echo "Адрес файла: $response"
rm /tmp/$filename.tar.gz
else
filename=$(basename "$1")
response=$(curl --upload-file "$1" "https://transfer.sh/$filename")
echo "Адрес файла: $response"
fi
--- Конец кода ---
оба позволяют получить ссылку которую можно передать для скачивания . Автору скрипта спасибо, и от меня подписка и нравлик. Пост не рекламный просто понравился способ и транслирую его дальше, слегка доработав.
k0l0p0k:
https://temp.sh/
totiks2012:
--- Цитата: k0l0p0k от 08 Февраль 2024, 21:48:51 ---https://temp.sh/
--- Конец цитаты ---
О еще один сервис спасибо! Представленный вами держит 4 гиг, тот что выше 10 гиг единоразово, но всё равно интересно и спасибо!
в итоге пришел вот к такому скрипту для удобства, жмёт всё без разбора и использует xsel то есть копируем в буфер файл,каталог что угодно, набираем комбину горячих клавиш, и файл отослан во временное облако при этом выдает в терминале ссылку . естествено комбину нужно настроить с выводом терминала
--- Код ---
#!/bin/bash
#set -x
file_dir=$(xsel -b)
filename=$(basename "$file_dir")
mkdir -p /tmp
tar -czvf /tmp/"$filename.tar.gz" "$file_dir"
response=$(curl --upload-file /tmp/$filename.tar.gz "https://transfer.sh/$filename.tar.gz")
echo " "
echo "-------------------------------------------------------------"
echo " "
echo "Адрес файла: $response"
echo " "
echo "-------------------------------------------------------------"
echo " "
rm /tmp/$filename.tar.gz
echo "чтоб закончить ввод"
read
--- Конец кода ---
k0l0p0k:
можно добавить сохранение ссылок в файлик(руками не сохранять)
--- Код ---
#LOG_FILE=`mktemp`
LOG_FILE=$HOME/.config/transfer.sh.history # можно в другое место
if [ -f $LOG_FILE ]
then echo "используем $LOG_FILE" # >/dev/null
else > $LOG_FILE ; echo "создан $LOG_FILE"
fi
# остальной код
# ...
# если пользователь отметил больше одного файла/каталога :
# LIST=$(xsel -b | sed 's/file:\/\///g') # список файлов для упаковки
# tar -czvf "`mktemp`.tar.gz" $(echo "$LIST" | tr "\n" " ") # пакуем
# ...
# echo "Адрес файла: $response" >> $LOG_FILE # сохраним адрес
# cat $LOG_FILE | tail -n 1 # покажем пользователю последний сохраненный адрес
# или (как вариант) :
# echo "Адрес файла: $response" | tee -a $LOG_FILE # и покажем и сохраним одновременно
# ...
exit 0
--- Конец кода ---
и еще наверное нужно какой-нибудь прогресс показывать, если процесс много времени занимает
totiks2012:
--- Цитата: k0l0p0k от 09 Февраль 2024, 17:19:36 ---и еще наверное нужен какой-нибудь прогресс показывать, если процесс много времени занимает
--- Конец цитаты ---
при закачивании curl выдаёт лог загрузки в процентах, но вы о псевдо баре загрузки наверно говорите...
я понял , вы говорили о долгом процессе упаковки, вроде решил это , ща протестирую также и с опцией сохранения в файл.
upd: Думаю это окончательный скрипт весьма интересный получился , спасибо! за идеи и участие k0l0p0k,
нужен xsel, pv , curl
адресс сохраняется в HOME/.config/ADR
подвешиваем на комбинацию клавиш этот скрипт,копируем желаемый файл в буфер, если файл большой наслаждаемся прогресс баром, по меньше тоже но не успеваем насладится, ну и дальше файл отсылается в https://transfer.sh получаем адрес скачивания в терминале, а также в файл по пути HOME/.config/ADR
вот код
--- Код ---
#!/bin/bash
#set -x
LOG_FILE=$HOME/.config/ADR
file_dir=$(xsel -b)
filename=$(basename "$file_dir")
mkdir -p /tmp
#tar -czvf /tmp/"$filename.tar.gz" "$file_dir"
# Создаем несжатый архив
tar -cf /tmp/$filename.tar "$file_dir"
# Отображаем прогресс сжатия
pv /tmp/$filename.tar | gzip > /tmp/$filename.tar.gz
response=$(curl --upload-file /tmp/$filename.tar.gz "https://transfer.sh/$filename.tar.gz")
echo " "
echo "-------------------------------------------------------------"
echo " "
#echo "Адрес файла: $response"
echo "Адрес файла: $response" | tee -a $LOG_FILE
echo " "
echo "-------------------------------------------------------------"
echo " "
rm /tmp/$filename.tar.gz
echo "чтоб закончить ввод"
read ex
--- Конец кода ---
Навигация
Перейти к полной версии