Golang download bitrix backup
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
fmt.Println("start")
url := "https://site.com/bitrix/backup/123.tar"
for i := 0; i < 100; i++ {
if i == 0 {
downloadFile(url)
} else {
newUrl := fmt.Sprintf("%s.%d", url, i)
downloadFile(newUrl)
}
}
}
func downloadFile(url string) {
fmt.Println("Скачиваю ", url)
// Создаем HTTP-запрос
req, err := http.NewRequest("GET", url, nil)
if err != nil {
fmt.Println("Не удалось создать запрос:", err)
return
}
// Выполняем запрос
resp, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("Не удалось выполнить запрос:", err)
return
}
defer resp.Body.Close()
// Получаем имя файла из заголовков ответа
/*
filename := resp.Header.Get("Content-Disposition")
if filename == "" {
// Если имя файла не указано в заголовках, то сгенерируем его случайным образом
filename = "file.zip"
}
*/
urlArray := strings.Split(url, "/")
filename := urlArray[len(urlArray)-1]
// Создаем файл на диске
file, err := os.Create(filename)
if err != nil {
fmt.Println("Не удалось создать файл:", err)
return
}
defer file.Close()
// Записываем содержимое файла в созданный файл на диске
_, err = io.Copy(file, resp.Body)
if err != nil {
fmt.Println("Не удалось записать данные в файл:", err)
return
}
fmt.Println("Файл успешно скачан и сохранен:", filename)
}