LINUX.ORG.RU
ФорумAdmin

Восстановить файл

 ,


0

1

Пол дня скрипт писал, правил по FTP, а потом перезатер GITом.

git reset --hard origin/master
git pull origin master


В репе была старая версия. То есть файл я в GIT добавил. А потом его тупо по ФТП правил и перезатер PULLом

Как можно выковырять откуда-то либо? Кэши FTP может или GIT история. Но хотя там истории то нет, т.к. я не комитил

★★★★
Ответ на: комментарий от aol

Список вывели, а дальше?

Ну я закомитил начало только

#!/bin/bash


а потом по FTP этот файл правил, ну и не комитил конечно же. Потом закомитил снова этот пустой файл и он перезатер (git reset --hard origin/master) тот файл который я по FTP правил

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Список вывели, а дальше?

а дальше напротив каждой строки хэш есть, через который можно получить содержимое на тот момент. даже если эти хэши уже не принадлежат ни одному бранчу и будут удалены следующим вызовом git gc

aol ★★★★★
()

Набор отвратительностей:

  1. FTP
  2. git reset --hard

Дорогие друзья, в этом ITT треде можно воочию убедиться, как сочетание целых двух «bad practice» в одном месте привело к ужасно печальным последствиям.

В следующий раз когда у вас зачешется FTP, а пальцы потянутся к git reset --hard, обязательно вспомните эту тему.


TC’у – был в Linux’е нормальный HEX-редактор, а не тот кал что предлагают к использованию я бы тебе посоветовал взять его в руки и открыть условный /dev/sda, а потом поискать по кускам своего скрипта текст. Раз ты его писал долго, куски помнить должен.

Мало ли, вдруг осталось чего. Я подобным образом не раз спасал случайно удалённые файлы.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 3)
Ответ на: комментарий от EXL

а чем FTP то отвратителен, о господи?

git reset --hard

Это нужно чтобы локальные правки (случайные) откатывать и не морочиться с merge вечно вылезающим. Удобно. Работает годами и не жалуюсь

бы тебе посоветовал взять его в руки и открыть условный

О не, на это уйдет пол жизни. Быстрее будет скрипт переписать

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Это нужно чтобы локальные правки (случайные) откатывать и не морочиться с merge вечно вылезающим. Удобно. Работает годами и не жалуюсь

"Чтобы не стирать одежду и обувь, я годами хожу в костюме химзащиты на костылях. Мне удобно. Никого слушать не желаю, это идеальное решение проблемы.

Но подскажите: как бороться с тем, что костыли протирают дыры в подмышках костюма химзащиты."

Вот как это звучит. Ну, я не знаю, чем тут можно помочь, если ты сам не видишь никаких проблем в твоей организации процесса.

Chiffchaff
()
Ответ на: комментарий от Chiffchaff

О боже. Ну так скажи, в чем это плохо, кому твои метафоры нужны заумные? Я же не говорю что сделал кошерно, ну как мог так и сделал, насколько на то время хватило знаний так и сделал. Но работает, задачи мои выполняет (я использую git как обновлялку)

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

бы тебе посоветовал взять его в руки и открыть условный

О не, на это уйдет пол жизни. Быстрее будет скрипт переписать

Можно и без hex-редактора, часто бывает достаточно обычного grep - grep -a -A100 -B100 'текст' /dev/sda | cat -v

No ★★
()
Ответ на: комментарий от No

Вывалилась какая-то дичь ))

-8:^@M-PM-^\^@M-PM-^_M-PM->M-PM-<M-PM-8M-PM-;M-PM-:M-PM-0 M-PM-?M-QM-^VM-PM-4 M-QM-^GM-PM-0M-QM-^A M-PM-?M-PM-5M-QM-^@M-PM-5M-PM-2M-QM-^VM-QM-^@M-PM-:M-PM-8 MAC-M-PM-0M-PM-4M-QM-^@M-PM-5M-QM-^AM-PM-8^@M-PM-^\M-PM-^^M-PM-^TM-PM-#M-PM-^[M-PM-,^@M-PM-^\M-PM-^^M-PM-^TM-PM-#M-PM-^[M-PM-^F^@M-PM-!M-QM-^EM-PM-2M-PM-0M-PM-;M-PM-5M-PM-=M-PM-=M-QM-^O M-QM-^C M-QM-^AM-QM-^BM-PM-8M-PM-;M-QM-^V Mac M-PM-=M-PM-0 HFS M-PM-0M-PM-1M-PM-> HFS+^@M-PM-^WM-PM-0M-PM-?M-PM-8M-QM-^BM-PM-8 M-QM-^IM-PM->M-PM-4M-PM-> M-PM-?M-QM-^VM-PM-4M-QM-^BM-QM-^@M-PM-8M-PM-<M-PM-:M-PM-8 xorriso M-QM-^AM-PM-;M-QM-^VM-PM-4 M-PM-=M-PM-0M-PM-4M-QM-^AM-PM-8M-PM-;M-

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Смысл в том, что если используешь git, то зачем использовать прямое редактирование по FTP?

Если работаешь в команде, то я бы за такое не то, что линейкой по рукам бил, а руку бы ломал за профнепригодность.

Если работаешь один, то сам ведь уже должен был понять, что носишь заряженный пистолет без предохранителя в кармане, вот он и выстрелил.

Что мешает правки вносить через Git и только через него?

Chiffchaff
()
Ответ на: комментарий от Chiffchaff

Если работаешь один, то сам ведь уже должен был понять, что носишь заряженный пистолет без предохранителя в кармане, вот он и выстрелил.

Не, он не поймёт, мне кажется.

ТС, ответ «никак». В следующий раз делай нормально сразу.

Совет про поискать по остатка в ФС вполне годный, но вряд ли ты так что-то дельное восстановишь.

В общем, иди пиши скрипт с нуля по FTP и не забудь, конечно же, потом снова сделать git reset.

Zhbert ★★★★★
()
Ответ на: комментарий от Chiffchaff

зачем использовать прямое редактирование по FTP

О боже, это исключение было, такое бывает 1 раз в год. Чтобы не делать 20 раз commit->push->bare->pull после каждой правки. А тестить скрипт нужно удаленно

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Чтобы не делать 20 раз commit->push->bare->pull после каждой правки. А тестить скрипт нужно удаленно

На самом деле в этом и правда нет ничего плохого. Иногда полезно править скрипт по месту, а уже потом затащить в репу, чтобы не потерялось. Это, конечно, нарушает всякие там принципы GitOps и прочее, но они не всегда и нужны. Просто надо понимать, что в таком режиме это всё равносильно просто работе со скриптом как с обычным файлом, который можно потом случайно удалить. Я тоже так делал много раз → что-то пилишь, а потом по привычке удаляешь без всяких корзин с шифтом и всё, работа потеряна. Но тут уж сам виноват, если руки из жопы, и сначала делаешь, а потом думаешь. Это я к чему? К тому, что то, что сделал ты, равносильно вышеописанному :) И починить это можно только с помощью бубна и Ктулху, если получится достать ошмётки напрямую из ФС, но зачастую это настолько бесполезное занятие, что даже начинать не стоит, и проще переписать заново.

Zhbert ★★★★★
()
Ответ на: комментарий от gobot

О боже, это исключение было, такое бывает 1 раз в год. Чтобы не делать 20 раз commit->push->bare->pull после каждой правки. А тестить скрипт нужно удаленно

Я не знаю, в чём заключается работа скрипта, но в серьёзной разработке (любая контора уровня выше «Рога и копыта - сделаем любой лендинг!») у разработчиков вообще нет доступа к проду. Никакого.

Всегда можно воспроизвести продовое окружение локально с достаточной степенью достоверности.

Chiffchaff
()
Ответ на: комментарий от Chiffchaff

Я не знаю, в чём заключается работа скрипта, но в серьёзной разработке (любая контора уровня выше «Рога и копыта - сделаем любой лендинг!») у разработчиков вообще нет доступа к проду. Никакого.

@kompospec с тобой не согласен :)

Zhbert ★★★★★
()
Ответ на: комментарий от Chiffchaff

Пилять...Причем тут контора?

в серьёзной разработке

Что такое серьезная разработка?

Всегда можно воспроизвести продовое окружение локально

Да сфига ли всегда то? Если я например бэкап настраивал или фаервол? Куча вещей что локально не сделаешь

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Пилять…Причем тут контора?

При том, что в маленьких конторах может быть как высокая культура разработки, так и низкая. Но низкая вероятнее.

Если в большой конторе будет низкая культура разработки, то контора просто встанет. Отчасти поэтому сейчас в большие конторы по 8 раундов собесов, на которых надо знать всё.

Что такое серьезная разработка?

В двух словах не ответить. С минимумом костылей.

Да сфига ли всегда то? Если я например бэкап настраивал или фаервол? Куча вещей что локально не сделаешь

Я не сисадмин и не девопс. Насколько я понимаю, вносятся изменения в конфигурацию Ansible, сама конфигурация коммитится в Git. Получаем прозрачную воспроизводимую историю изменений. Но моё понимание деталей может быть немного расплывчатым, да и точный сценарий будет несколько отличаться от конторы к конторе.

Но в том или ином виде будет так, а не «сотрудник зашёл на сервер и произвольно ввёл последовательность команд». Как минимум, потому что завтра этот сотрудник уйдёт на отгул или в отпуск, а последовательность понадобится сделать снова.

Chiffchaff
()

У меня была похожая история, написал прогу себе для этого Найти случайно затёртый с диска исходник - можно найти на диске файл или его куски если ты помнишь какие-нить строки из них.

Но нужен рут-доступ на сервер где файл лежал.

firkax ★★★★★
()
Ответ на: комментарий от gobot

а чем FTP то отвратителен, о господи?

Тем что это file transfer protocol.

Это нужно чтобы локальные правки (случайные) откатывать и не морочиться с merge вечно вылезающим.

Ясно, человеку дали аварийный выход на самый крайний случай, а он его стал использовать в повседневности. Точнее даже так, человеку дали правильный инструмент, но он вместо того, что бы научится его использовать продолжает забивать шурупы молотком.

anc ★★★★★
()
Ответ на: комментарий от gobot

зачем использовать прямое редактирование по FTP

О боже, это исключение было, такое бывает 1 раз в год.

1 раз в год это уже ниразу не исключение.

Чтобы не делать 20 раз commit->push->bare->pull после каждой правки. А тестить скрипт нужно удаленно

Ну вот совсем не исключение. Однажды посеянное bad practice ожидаемо дает со временем свои всходы.
Если вы занимаетесь глубокой отладкой, то зачем вам после изменения каждой строки commit ?

anc ★★★★★
()
Ответ на: комментарий от gobot

в серьёзной разработке

Что такое серьезная разработка?

Это чуть больше чем домашний «Hello, world!».

Да сфига ли всегда то? Если я например бэкап настраивал или фаервол?

Нууу «настраивать firewall удаленно, ночью, к дальней поездке» (c)
Если вы не предусмотрели никаких вариантов отката локально без использования всяких git и т.п., то вы ССЗБ.

anc ★★★★★
()
Ответ на: комментарий от Chiffchaff

При том, что в маленьких конторах может быть как высокая культура разработки, так и низкая. Но низкая вероятнее.

Как раз низкая вероятнее в больших.

Если в большой конторе будет низкая культура разработки, то контора просто встанет.

Всякие МЦ и т.п. смотрят на вас с недоумением.

Отчасти поэтому сейчас в большие конторы по 8 раундов собесов, на которых надо знать всё.

Не поэтому, а потому что у них штат собеседующих зашкаливает. Бабла намеренно, а бездельникам надо как-то отбивать свою значимость.

Что такое серьезная разработка?

В двух словах не ответить. С минимумом костылей.

С минимумом костылей... определение серьезной разработки... Забавно.

Я не сисадмин и не девопс.

А кто вы?

Насколько я понимаю, вносятся изменения в конфигурацию Ansible, сама конфигурация коммитится в Git.

сама... сама коммититься... ну продолжайте «понимать»...

Но моё понимание деталей может быть немного расплывчатым

расплывчатым до глубокой сумрачности.

Но в том или ином виде будет так

Блажен кто верует.

anc ★★★★★
()