Как отменить изменения в файле linux

Обновлено: 06.07.2024

Можно ли отменить операции, выполняемые в терминале, например, удаление файла через rm ?

  1. Искажения
  2. Утилиты Undelete
  3. Утилиты резервного копирования
  4. LibTrash
  5. Управление версиями (FUSE)

Для каждой операции в терминале нет общего «отмены». Если вы хотите восстановить файл после использования rm , вам нужно будет искать программное обеспечение для восстановления.

Опция предотвращения будущих ошибок заключается в том, чтобы сделать alias es для альтернативных команд для удаления файлов. Добавьте их в свой

/.bashrc и привыкнуть использовать их вместо rm .

Если вы используете rmi , вам будет предложено подтвердить удаление в будущем. Попытайтесь избежать привычки сразу нажать y после того, как вы внесете команду rmi , так как это победит цель.

Вы также можете перемещать файлы, удаленные командой trsh в терминале, в ваш корзину (в KDE и Gnome):

Если вы используете trsh , у вас будет ограниченная возможность «восстановить». Остерегайтесь, что

может по-прежнему вызывать неустранимую потерю данных.

В командной строке нет корзины.

Вы можете попробовать некоторые утилиты undelete, но нет гарантии, что они будут работать.

Вы можете использовать trash-cli , если вы используете KDE при запуске gui , Это утилита командной строки для удаления /восстановления с использованием средств утилизации KDE.

Вы можете сделать rm псевдоним для trash (сначала вам нужно установить trash ). Добавьте это в свой

Это предпочтительнее alias rm='mv --target-directory=$HOME/.Trash' , так как

/.Trash НЕ является папкой мусора для gnome. Лучше ИМХО позволить trash определить, где находится фактическая папка мусора.

btw Я бы разместил это в комментарии, но мне не хватает репутации.

Еще два технических решения еще не названы:

  1. libtrash : динамическая библиотека, которая может быть предварительно загружена в вашей оболочке, которая перехватывает удаление /удаление системных вызовов и перемещение файлов в папку для мусора (как и псевдоним, но работает для любого приложения при предварительной загрузке).
  2. Файловая система версий. Если вы удалите (или отредактируете или скопируете или . ) файл, вы можете просто вернуться к старому состоянию. Это можно сделать с файловой системой FUSE и одним из ее файловые системы версий .

Здесь есть большой вопрос, заслуживающий внимания. Команды Shell не чаты (они не проверяют, что вы хотите), и они ожидают, что вы знаете, что делаете. Это имеет фундаментальное значение для дизайна . Это особенность, а не ошибка.

Некоторые люди чувствуют себя мачо, когда они используют такие команды, которые, я думаю, довольно глупы, но важно понять опасности. Вы можете нанести большой урон в терминале, даже если вы не root. Я думаю, вы, вероятно, действительно заботились о rm , но, поскольку вы сказали «Можем ли мы отменить операции, выполняемые в терминале», я подумал об этом стоило сказать. Общий ответ - нет, вы не можете.

Вариант 1: см. Отменить файлы Linux из файловой системы ext2 . На этой странице указывается программа, написанная Себастьяном Хетце из компании LunetIX, которая (как следует из названия) удаляет недавно удаленные файлы из файловой системы ext2. Пример использования:

  • Исходный веб-сайт исчез. Ссылка, приведенная выше, относится к Интернет-архиву.
  • Сайт (ы) находятся в смеси английского и немецкого языков.
  • Как указано выше, инструмент разработан специально для файловой системы ext2. Это вряд ли будет работать на любой другой тип файловой системы; особенно не одни, кроме ext N .

Вариант 2: У меня на компьютере работает rsnapshot (rsync), который делает моментальные снимки по моим выбранным папкам. Он постепенно делает это каждый час, 2 часа или все, что вы скажете CRON. После полного дня он восстанавливает эти снимки в один дневной снимок и через 7 дней в неделю и так далее и так далее. Это заставляет меня возвращаться во времени около месяца или около того на каждый час! Это довольно хорошо с дисковым пространством, поскольку оно создает символические ссылки на файлы, которые никогда не менялись .

Существуют утилиты undelete для ext2, но большинство других файловых систем Linux застряли в каменном веке и не имеют каких-либо расширенных функций юзабилити. Грустное положение дел, рассматривающее гигантские диски с достаточным пространством, чтобы никогда не удалять файл снова, является обычным явлением.

Итак, вы застряли в трех вариантах:

Регулярно выполняйте резервное копирование, например, с помощью команды, например:

rsync -axvRP --backup --backupdir=/backup/incr/$(date -I) /home/ /backup/root/

Используйте инструмент управления версиями, например git для всей вашей работы. Хотя это не защитит от сумасшедшего rm -r , который убивает репозиторий, он будет защищать от обычных проблем, поскольку вы будете использовать git rm не raw rm .

Будьте особенно осторожны и не слишком доверяете в rm -i , trash-cli и друзей, так как большинство данных вы потеряете на оболочке, вы не проиграете случайно rm , но неправильно обработанные каналы, ошибочные выходные файлы, неверно указали mv и т. д., то есть вещи, которые будут перезаписывать ваши данные, а не просто удалить он.

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

предположим, что вы сделали

от терминала. восстановление этого файла - утомительный и не всегда успешный процесс.

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

эквивалентны. сценарий обрабатывает больше случаев и не изменяет вашу систему rm вообще и это связано с тем, что он помещается в локальную папку bin пользователя, поэтому он тени системы rm и все же не влияет на нее или отключает ее использование.

это усовершенствованный алгоритм сглаживания, но без потери функции

TestDisk может восстановить файлы из FAT, exFAT, NTFS и ext2 файловые системы.

Для меня (opensuse leap 42.2, NTFS pendrive) PhotoRec - также через testdisk создатели - работали :) Однако он не восстанавливает имена файлов.

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

Иногда при редактировании файла вы можете удалить неправильную строку или передумать редактировать, и вам захочется отменить изменения.

В этой статье объясняется, как отменить и повторить изменения в Vim / Vi.

Либо Vi, либо Vim устанавливается по умолчанию в macOS и почти во всех дистрибутивах Linux. Знание основ Vim может быть очень полезным, когда вы сталкиваетесь с ситуацией, когда ваш любимый редактор недоступен.

Отменить изменения в Vim / Vi

Vim отслеживает все изменения, внесенные вами в текущем сеансе. Команда отмены отменяет одно или несколько изменений в порядке их внесения.

Чтобы отменить изменения в Vim и Vi, используйте команды u :u или :undo :

  1. Если вы находитесь в режиме вставки или в любом другом режиме, нажмите Esc чтобы вернуться в нормальный режим, который также известен как командный режим.
  2. Введите u чтобы отменить последнее изменение. В Vim команда u также принимает квантификаторы. Например, если вы хотите отменить четыре последних изменения, вы должны использовать 4u .

Убедитесь, что вы набираете u нижнем регистре, а не команду U в верхнем регистре, которая отменяет все последние изменения в одной строке. Если вы случайно наберете U вы можете отменить изменение с помощью u .

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

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

Вернуть изменения в Vim / Vi

Функция повтора отменяет действие отмены.

Чтобы повторить изменение в Vim и Vi, используйте Ctrl-R или :redo :

  1. Нажмите Esc чтобы вернуться в нормальный режим.
  2. Используйте Ctrl-R (нажмите и удерживайте Ctrl и нажмите r ), чтобы повторить последнее изменение. В Vim вы также можете использовать квантификаторы. Например, если вы хотите повторить 4 последних изменения, введите 4Ctrl-R .

Каждую команду отмены можно отменить с помощью команды повтора.

Выводы

Чтобы отменить изменение в Vim / Vi, введите u , а для возврата отмененного изменения используйте последовательность Ctrl-R .

При изучении командной строки Linux часто упоминается предостережение о том, что в ней отсутствует команда undo. Это особенно актуально для таких вещей, как удаление файлов с помощью команды rm; тем не менее, Linux имеет эквиваленты на все подобные случаи.

Данное руководство описывает способы отмены (undo) изменений, внесенных из командной строки. Единственной стратегии не существует, потому использованные программы и техники варьируются относительно того, что именно нужно отменить.

Все действия данного руководства выполнены на Ubuntu 12.04, но большинство дистрибутивов и версий Linux также могут выполнить их, но могут нуждаться в небольшой редакции.

Отмена изменений файла

Резервное копирование

Конечно, самый простой и надежный способ отменить внесенные на сервер изменения – это запустить регулярное резервное копирование важных файлов.

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

Резервные копии позволяет полностью восстановить нанесенный серверу урон. Они могут обрабатывать общее повреждение или удаление данных до тех пор, пока копии данных хранятся в удаленном местоположении.

Существуют различные уровни резервного копирования, а именно: полное копирование (резервное копирование всех данных), дифференциальное резервное копирование (копирование каждого файла, который изменился с момента последнего полного резервного копирования), а также инкрементное резервное копирование (копирование изменений данных в файлах с момента последнего полного или дифференциального копирования).

Часто последние два уровня совмещаются с целью получить полную резервную копию файлов без затрат на запуск полного копирования.

Обычно отдельные файлы могут быть восстановлены без необходимости восстановления всей файловой системы. Это особенно полезно, если файл был случайно удален или изменен.

Контроль версий

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

Системы контроля версий, такие как Git и Mercurial, позволяют отслеживать изменения файлов. Это значит, что если над конфигурационным каталогом (как /etc) осуществляется контроль версий, то нарушившие систему изменения можно легко отменить.

На этом сайте есть несколько статей, охватывающих использование Git.

Вкратце, Git можно установить на Ubuntu с помощью следующих команд:

sudo apt-get update
sudo apt-get install git

После завершения установки нужно настроить несколько параметров конфигурации, набрав:

git config --global user.name "your_name"
git config --global user.email "your_email"

Затем нужно указать каталог, изменения которого нужно отслеживать. Для примера можно использовать каталог /etc. Также стоит установить контроль версий домашнего каталога. Инициализировать git-репозиторий можно, введя:

cd /etc
sudo git init

Затем можно внести в данный каталог (и во все его подкаталоги) все файлы, набрав:

Подтвердите изменения, набрав:

git commit -m "Initial commit"

Затем можно вернуть файл к предыдущему состоянию, найдя хэш подтверждения в журнале:

git log
commit 7aca1cf3b5b19c6d37b4ddc6860945e8c644cd4f
Author: root
Date: Thu Jan 23 13:28:25 2014 -0500
again
commit 4be26a199fd9691dc567412a470d446507885966
Author: root
Date: Thu Jan 23 13:20:38 2014 -0500
initial commit

Теперь восстановите файл, набрав что-то вроде:

git checkout commit_hash -- file_to_revert

Как можно видеть, это довольно простой способ отменить внесенные изменения.

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

Отмена изменений при помощи менеджера пакетов

Иногда менеджер пакетов apt вносит некоторые изменения, которые нужно отменить. В других случаях, менеджер пакетов может помочь восстановить параметры пакета по умолчанию.

Удаление пакетов с помощью Apt

Иногда пакет устанавливается только для того, чтобы убедиться, что он не подходит. Чтобы удалить пакет при помощи apt, наберите:

sudo apt-get remove package

Но данное действие оставляет конфигурационные файлы невредимыми. Иногда это полезно, но если пакет нужно полностью удалить с системы, нужно использовать команду «purge»:

sudo apt-get purge package

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

Чтобы удалить любые автоматически установленные зависимости, используйте команду apt «autoremove»:

sudo apt-get autoremove --purge

Также случается, что при установке пакетов при помощи apt сложно удалить метапакеты.

Метапакеты – это просто пакеты, которые являются списком зависимостей. Сами они ничего не устанавливают, так как это просто список других пакетов, которые нужно скачать. Как известно, их достаточно сложно полностью удалить автоматически.

Инструмент, который может помочь в данной ситуации – пакет «deborphan». Чтобы установить его, введите:

sudo apt-get install deborphan

После удаления метапакета можно запустить команду «orphaner», чтобы найти оставленные при удалении пакета файлы. Это помогает обнаружить пакеты, которые нельзя удалить обычными методами.

Еще один способ найти блуждающие файлы – пакет «mlocate». Его можно установить так:

sudo apt-get install mlocate

Затем можно обновить индекс файлов путем запуска этой команды:

После этого можно искать имя пакета, чтобы увидеть, есть ли дополнительные места в файловой системе (за пределами apt-индексов), где еще упоминается этот пакет.

Также можно увидеть файлы, установленные пакетами посредством метапакетов, просмотрев apt-логи:

sudo nano /var/lob/apt/history.log

Информация о пакетах может быть использована для удаления ненужных пакетов вручную.

Восстановление файлов по умолчанию

Иногда при внесении изменений в конфигурационные файлы появляется необходимость восстановить параметры дистрибутива по умолчанию.

При необходимости создать резервную копию текущего конфигурационного файла можно ввести:

sudo mv file file.bak

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

После удаления или перемещения файла можно переустановить пакет, говоря apt проверить, отсутствует ли какой-либо конфигурационный файл:

sudo apt-get -o Dpkg::Options="--force-confmiss" install --reinstall package_name

Если пакет, отвечающий за конфигурационный файл, который нужно восстановить, неизвестен, то можно использовать утилиту «dpkg»:

dpkg -S file_name

Чтобы просто просмотреть изначальные этапы конфигурирования пакета, на которых во время некоторых установок изменяются определенные значения, запустите команду:

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

Как найти права на файл по умолчанию

Часто нужно восстановить права на файл по умолчанию. Иногда права изменяют, следуя какому-либо совету, или же с целью тестирования, и позже оказывается, что такие права не подходят.

Выяснить права на файл по умолчанию можно, узнав, какому пакету принадлежит файл. Это можно сделать с помощью команды:

dpkg -S filename

Это действие указывает пакет, к которому относится данный файл. К примеру, если нужно выяснить, к какому пакету относится файл /etc/deluser.conf, можно ввести:

dpkg -S /etc/deluser.conf
adduser: /etc/deluser.conf

Как видите, это действие сообщает, что за данный файл отвечает пакет «adduser». Затем можно попробовать найти файл «.deb» данного пакета, перейдя в архив apt:

В данном каталоге можно найти файлы «.deb» для многих установленных в данной системе пакетов. Если файл, соответствующий используемому пакету, не может быть найден, то его придется повторно скачать из репозитория при помощи команды:

sudo apt-get download package

К примеру, если файл «.deb» для пакета adduser не был найден, то его можно получить, введя:

sudo apt-get download adduser

После того, как файл находится в данном каталоге, можно запросить атрибуты по умолчанию файлов, установленных ним, с помощью команды:

Для программы «adduser» результат выглядит примерно так:

dpkg -c adduser_3.113ubuntu2_all.deb
drwxr-xr-x root/root 0 2011-10-19 18:01 ./
drwxr-xr-x root/root 0 2011-10-19 18:01 ./etc/
-rw-r--r-- root/root 604 2011-10-19 18:01 ./etc/deluser.conf
drwxr-xr-x root/root 0 2011-10-19 18:01 ./usr/
drwxr-xr-x root/root 0 2011-10-19 18:01 ./usr/sbin/
-rwxr-xr-x root/root 35120 2011-10-19 18:01 ./usr/sbin/adduser
-rwxr-xr-x root/root 16511 2011-10-19 18:01 ./usr/sbin/deluser
. . .

Как можно видеть, пакет по умолчанию устанавливает права на чтение и запись для владельца (root), а также права на чтение для всех остальных пользователей.

Итоги

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

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

Введите u, чтобы отменить последнее изменение. Чтобы отменить два последних изменения, введите 2u. Нажмите Ctrl-r, чтобы повторить изменения, которые были отменены.

Есть ли в Linux команда отмены?

В командной строке нет отмены. Однако вы можете запускать команды как rm -i и mv -i.

Какая команда отменяет изменения?

Пытаться Git checkout - чтобы отменить незафиксированные изменения в файле. Git reset –hard предназначен для отмены всех незафиксированных изменений. Используйте Git reset –hard чтобы указать репо на предыдущую фиксацию.

Как мне отменить изменения в Ubuntu?

Вы не можете напрямую отменить команду. К сожалению, Linux не поддерживает эту функцию. Вы можете использовать историю команд, чтобы перечислить все предыдущие команды, которые вы использовали. Вы должны найти обратную команду для всех из них (например, если вы вызвали команду sudo apt-get install, вам нужно вызвать sudo apt-get purge).

Как мне отменить предыдущую команду?

Чтобы отменить последнее действие, нажмите CTRL + Z. Вы можете отменить более одного действия. Чтобы отменить последнее действие, нажмите CTRL + Y.

Как мне отменить удаление в Linux?

Краткий ответ: нельзя. rm удаляет файлы вслепую, без понятия "мусор". Некоторые системы Unix и Linux пытаются ограничить его разрушительную способность, используя по умолчанию псевдоним rm -i, но не все это делают.

Как мне отменить в Unix?

Unix изначально не предоставляет возможности отмены. Философия заключается в том, что если его нет, значит, нет. Если это было важно, надо было сделать резервную копию. Вместо того, чтобы удалять файл, вы можете переместить его во временную «корзину».

Как отменить локальное изменение?

Отменить локальные изменения

  1. Чтобы перезаписать локальные изменения: git checkout -
  2. Чтобы сохранить локальные изменения, чтобы вы могли повторно использовать их позже: git stash.
  3. Чтобы навсегда отменить локальные изменения всех файлов: git reset –hard.

Как мне отменить изменение git push?

Сценарий 4: Отмена фиксации, отправленной на удаленный компьютер

  1. Зайдите в историю Git.
  2. Щелкните правой кнопкой мыши фиксацию, которую вы хотите отменить.
  3. Выберите «Отменить фиксацию».
  4. Убедитесь, что установлен флажок «Принять изменения».
  5. Нажмите "Вернуть".

Функцию «Отменить» чаще всего можно найти в меню «Правка». Многие программы имеют кнопку «Отменить» на панели инструментов, которая обычно имеет вид изогнутой стрелки, указывающей влево, как эта в Документах Google. Ctrl + Z (или Command + Z на Mac) - распространенное сочетание клавиш для отмены.

Как мне отменить режим вставки?

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

Что такое возврат в Ubuntu?

Примечание: git revert - это используется для записи некоторых новых коммитов, чтобы отменить эффект некоторых более ранних коммитов (часто только неисправный). Если вы хотите отбросить все незафиксированные изменения в вашем рабочем каталоге, вы должны увидеть git-reset (1), особенно параметр –hard.

Читайте также: