Pavel
Ну ладно, совсем глупо, но: почемуб не дропнуть все к херам перед распаковкой? ;)
Sergei
Nick
Sergei
если вам надо удалять все, чего нет в таре - может быть просто удалить вообще все и растарить? :)
Nick
95% файлов по 500 байт
Nick
журналу фс будет очень хорошо...
Sergei
rsync на таких числах тоже будет не очень быстро работать если што
Nick
рсинк замечательно работает на таких числах
Sergei
на воле божьей, не читая файлы (подразумеваем что проверка по размеру не дала результатов)?
Sergei
конкретно по задаче - маунт тара фьюзом - норм решение. дешево и сердито.
Vladimir
И удалить
Pavel
Ну на самом деле получить мильен строк из тара тож накладно
Pavel
Мне кажется рсинк всеже медленнее будет, чем дропать всё, а потом распаковывать
Sergei
Pavel
Да
Sergei
впрочем, ящитаю что tar.gz это немного ущербный формат для такой задачи. дифф будет в последних файлах, а прочитать придется 100 гб. :(
Pavel
Ну кстати да, интересно, на каком значении дифа время начнет значительно расти
Sergei
минимальное время - полное прочтение всего tar.gz + полное прочтение fs
Pavel
Ага, лента жи
Nick
Sergei
Nick
потому что если сделать просто экстракт, то быстренько запишутся файлы поверх, а надо удалить те, которых нет в этом бекапе
Nick
прочитать по сети один раз этот поток - это допустимые накладные расходы, а вот процесса удаления файлов, которые уже есть и в бекапе те же самые - очень хочется избежать
Sergei
беглое чтение https://golang.org/pkg/archive/tar/ намекает, что написать потоковый читатель, который делает конкретно то что тебе нужно - дело получаса-часа.
Sergei
не удивлюсь, впрочем, если готовый велосипед где-то уже есть.
Vladimir
тар умеет list без полной распаковки, но я не помню придется ли весь gz разжимать сначала
Vladimir
вроде бы нет
Pavel
Gz нет же
Vladimir
а, если нет то все проще
Sergei
Pavel
Vladimir
Vladimir
м... ну тогда да, разархивируем, попутно состсавляем свой список файлов
Sergei
+
Vladimir
и потом удаляем что не в нем
Pavel
И нету места
Sergei
Неуниверсально :)
непонятно.
любой комманд-лайн с таром неуниверсален.
любой скрипт неуниверсален.
любой код неуниверсален.
Pavel
Ну как минимум нужно стороннее приложение, не входящее в стандартный дистр
Sergei
если я это на баше напишу - лучше будет? я могу.
🏳️ Phil
вроде бы нет
Там вроде достаточно разжать заголовок собственно
Vladimir
@caligo8658 иногда надо выбирать - накостылять велосипед на баше или нет
Vladimir
Vladimir
чем скрипт отличается от статического бинаря?
Sergei
Sergei
напишите на перле.
Sergei
какая разница? мне просто было удобнее прочитать stdlib го.
Pavel
Sergei
тот же бинарь - нет. тот же код - да.
Pavel
Ну получается, мы уже несколько ограничены.. по крайней мере отсекаем компилируемое
Vitaliy
Я в го полный 0, оно на фре запустится?
очень редкие библиотеки не заведутся, не заведётся работа с ОС (типа вызова линуксовых сисколов), некоторая функциональность в стандартной библиотеке обрезана, а так — без проблем, даже компилируется так же, с точностью до ОДНОЙ env переменной
Sergei
Vladimir
Vitaliy
я ровно об этом
Vladimir
и оно соберется даже не смотря на сисколы и пр )
Pavel
Ну, надо опять же спросить у товарища, что задал вопрос. Баш знают все же
Vladimir
OS=freebsd ARCH=amd64 go build
Vitaliy
но кому нужно собирать под фряхой, когда можно собрать на родном маке, в любимой идешечке? )
Vladimir
это не аргумент про "баш знают все"
Vladimir
давайте тогда не писать на си, ведь баш знают все
Vladimir
и питоне
Pavel
Мож он для какойнить большой тройки решает задачу.. там не очень любят небаш :)
Pavel
Pavel
Тогда так, коль дискуссия разгорелась :)
Vitaliy
Pavel
С мегафон не сталкивался :)
Pavel
Но другие оч мозк делали
Nick
Правда снимок файлов можно отдельно получить, но ресурсоемко
Nick
Список
Sergei
русские чаты.
человек пришел с задачей и ему весь чат доказывает как у него все плохо.
Sergei
:)
G72K
ну задача в целом-то получить новое состояние ФС по сети и применить его налету, не сохраняя рядом, так? :)
Sergei
G72K
да ну, скучно :)