Общие вопросы > Полезные советы, инструкции

Быстрая передача файлов через интернет.

(1/3) > >>

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



--- Конец кода ---

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии