У нас есть отмена в Linux?

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

53
05.10.2010, 18:03
8 ответов

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

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

Лучший способ защитить от таких несчастных случаев состоит в том, чтобы использовать систему управления версиями (cvs, базар, darcs, мерзавец, подвижный, подверсия...). Требуется немного времени для изучения, но это окупается удивительно в среднесрочном и долгосрочном.

54
27.01.2020, 19:33
  • 1
    могла бы быть gitfs, который находится под devlopment –  test30 04.02.2016, 15:23
  • 2
    Хорошо, если Вы случайно удаляете или перезаписываете файл, что Вы не подготовили или фиксировали все же затем даже CVS, не помогает –  xdevs23 02.11.2017, 13:55

К сожалению, нет.

14
27.01.2020, 19:33
  • 1
    я не знаю, что рассматриваю этого неудачника... Потребовалось бы довольно много ресурсов для реализации отмены. Мне даже не нравится -i опция на rm включенный по умолчанию. Мои системы Unix не должны содержать мою руку. –  xenoterracide 22.08.2010, 11:18
  • 2
    i ответа включено по умолчанию?! не мой дистрибутив, никакой сэр! –  Stefan 05.09.2010, 22:36

Нет ни в каком Unix нет никакой волшебной отмены. Unix предполагает, что Вы знаете то, что Вы делаете. Для Отмены поддержка использует VCS (Вашему текстовому редактору, вероятно, встроили его также).

Большинство файловых систем не имеет возможности выполнения его прозрачно.

Машина времени и восстановление системы на Mac и окнах соответственно являются просто системами резервного копирования/контроля изменений.

9
27.01.2020, 19:33

В командной строке нет никакой отмены. Вы можете однако, команды выполнения как rm -i и mv -i. Это предложит Вам с, "действительно ли Вы уверены?" вопрос, прежде чем они выполнят команду.

Также возможно добавить псевдоним для него к сценарию запуска (например. ~/.bashrc или /etc/bash.bashrc):

alias remove='rm -i'
alias move='mv -i'

Править: предложениями ниже, я удалил свой совет исказить команды по умолчанию. Вместо этого это представляет новые команды теперь).

7
27.01.2020, 19:33
  • 1
    +1. только добавить здесь. После установки выше псевдонимов, если в некоторых случаях Вы хотите просто непосредственно, удаляют без, "Вы верная" подсказка, можно использовать \rm и \mv для обхода псевдонима. можно также использовать-f опцию. –  Hemant 22.08.2010, 12:12
  • 2
    mv -i подсказки только, когда это перезаписало бы файл (который делает это полезным и не неприятный). В том же духе, alias cp='cp -i'. –  Gilles 'SO- stop being evil' 22.08.2010, 12:54
  • 3
    страницы справочника, и mv является очень плохой идеей. (комната хуже из всех.) Никогда не привыкают использовать комнату для значения комнаты-i - Вы в конечном счете использовали бы ее где-нибудь, где псевдоним не определяется, и Вы удалите что-то навсегда. Если Вы любите предлагаться, привыкаете использовать комнату-i все время. –  msakr 22.08.2010, 16:35
  • 4
    Если Вам нравится предлагаться, используйте псевдоним под другим именем. Я использую перемещение ='mv-i', копируют ='cp-i', символьная ссылка ='ln - СИ', и устанавливает команду мусора для использования вместо комнаты. Я все еще использую mv, CP и комнату непосредственно при сценариях, но для интерактивного использования эти псевдонимы удобны. –   23.08.2010, 08:49
  • 5
    @mahmoudsakr Вы абсолютно правы, я упустил ту суть. Мне не исказили эти команды также. При искажении их, поскольку другая команда походит на самую нормальную опцию! –  vdboor 23.08.2010, 10:29

Причина, что системы Linux/Unix не имеют восстановить после удаления основ от пути большинством файловых систем, хранит их информацию. Метаинформация файла все хранится перед диском со ссылками на inodes на остальной части диска. Как правило, большинство файловых систем выделяет 10 блоков файлу в этой метаобласти. Первые 7 относятся к первым 7 inodes. 8-е и 9-е движение к спискам inodes (вдвойне связанные блоки) и 10-е движения к списку списков списков (трижды связанные блоки). Это варьируется от файловой системы до файловой системы (ext4, jfs, xfs, и т.д.), но эти списки блоков могут обычно обращаться к размерам файла где угодно от 2 ГБ до нескольких ТБ.

Но потому что вся эта информация хранится перед диском, когда файл стирается, нет никакого способа сослаться на inodes на диске к тому, какие метаданные они используют для принадлежности. По контрасту FAT32 и NTFS на самом деле снабжают некоторую информацию заголовка самими файлами, помогающими определить, какой файл ряд использования блоков для принадлежности (пока то пространство еще не было освобождено более новыми файлами). В работе Linux при удалении чего-то это - почти всегда первая вещь, которая будет сразу перезаписана новыми данными для эффективности.

4
27.01.2020, 19:33

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

2
27.01.2020, 19:33
  • 1
    Это не защитит Вас от rm -r . все же. ;) –  Umang 22.08.2010, 13:11
  • 2
    @Umang я на самом деле сделал это однажды с мерзавцем, где я сохраняю локальный репозиторий и случайно rm -r project.git. К счастью, если Вы сохраните другую версию на удаленном сервере, то это вряд ли произойдет –  phunehehe 22.08.2010, 16:37
  • 3
    @phunehehe и кто бы ни +1'd мой комментарий: мы слишком привыкли к DVCS, чтобы понять, что я был абсолютно неправ. SVN соглашается на repo (который не является ответвлением). Таким образом, Вы будете на самом деле защищены rm -r .. Действительно быть глупо со стороны меня. использование –  Umang 22.08.2010, 19:43

Одной вещью, которую мне нравится добавлять к моему .bashrc, является копия, и удалите функцию. Что-то как:

cprm(){
    cp -p $1 ~/deleted/$1
    rm $1
}

Но необходимо выработать привычку ввода cprm не комната.

Очевидно, необходимо будет сохранить сверху удаленной области при ограничении дискового пространства.

2
27.01.2020, 19:33
  • 1
    Вы могли действительно сократить это к mv 1$ ~/deleted/бык –  Stefan 05.09.2010, 22:37
  • 2
    да, и это перезапишет файл 'новый Документ 1' с другим 'новый Документ 1', если Вы разберетесь в заключении в кавычки: "$1". –  user unknown 18.08.2011, 09:11
  • 3
    @userunknown: Вы подразумеваете, что 1$ в коде Deano и Stefan должен быть заключен в кавычки как "1$"? –  StackExchange for All 25.03.2015, 08:37
  • 4
    @Tim проблемы поиска:Да. –  user unknown 25.03.2015, 17:25

GitFS - это файловая система на основе плавких вставок, которая автоматически рассчитывает diff между версиями и позволяет восстанавливать / просматривать их.

Веб-страница: https://www.presslabs.com/gitfs

Документы: https://www.presslabs.com/gitfs/docs/usage/

1
27.01.2020, 19:33

Теги

Похожие вопросы