Відповіді:
Linux (як і інші пристрої) не забезпечує функцію скасування. Філософія полягає в тому, що якщо його немає, його немає. Якби це було важливо, це повинно було бути підкріплено.
Існує файлова система запобіжників, яка автоматично зберігає копії старих версій: copyfs , доступні у всіх хороших дистрибутивах. Звичайно, для цього можна використовувати багато ресурсів.
Найкращий спосіб захисту від подібних аварій - це використання системи контролю версій (cvs, bazaar, darcs, git, mercurial, subversion, ...). Навчитися потрібно небагато часу, але це окупається надзвичайно в середньо- та довгостроковій перспективі.
На жаль, немає.
-i
опція rm
увімкнена за замовчуванням. Мої системи Unix не повинні тримати мене за руку.
Ні, немає жодного магічного скасування в жодному Unix. Unix припускає, що ви знаєте, що робите. Для підтримки скасування використання використовуйте VCS (напевно, у вашому текстовому редакторі теж вбудований).
Більшість файлових систем не мають можливості робити це прозоро.
Відновлення машини та системи часу на mac та windows - це лише системи управління резервними копіями / змінами.
У командному рядку немає скасування. Однак ви можете запускати команди як rm -i
і mv -i
. Це підкаже вам "Ви впевнені?" питання перед тим, як виконати команду.
Також можна додати псевдонім до сценарію запуску (наприклад, ~/.bashrc
або /etc/bash.bashrc
):
alias remove='rm -i'
alias move='mv -i'
Редагувати: запропонованими нижче пропозиціями я видалив поради щодо отримання псевдонімів за замовчуванням. Натомість він зараз вводить нові команди).
mv -i
вимагає лише тоді, коли він буде перезаписати файл (що робить його корисним і не шкідливим). У тому ж ключі alias cp='cp -i'
.
Причина того, що системи Linux / Unix не мають відновлення, пов'язана з тим, як більшість файлових систем зберігають свою інформацію. Метаінформація файлів зберігається на передній панелі диска з посиланнями на вставки на решті диска. Зазвичай більшість файлових систем виділяють 10 блоків файлу в цій мета-області. Перші 7 відносяться до перших 7 вузлів. 8-й та 9-й переходять до списків входів (подвійно зв'язані блоки), а 10-й переходить до списку списків (блоки, пов'язані втричі). Це залежить від файлової системи до файлової системи (ext4, jfs, xfs тощо), але ці списки блоків зазвичай можуть адресувати розміри файлів в будь-якому місці від 2 Гб до декількох ТБ.
Але оскільки вся ця інформація зберігається на передній панелі диска, коли файл стирається, немає можливості посилатись на входи на диску до тих мета-даних, які вони належать. На відміну від FAT32 та NTFS насправді зберігають деяку інформацію заголовка із самими файлами, що полегшує визначення того, до якого файлу належить набір блоків (доки цей простір ще не відшкодовано новішими файлами). У роботі Linux, коли ви щось видаляєте, майже завжди перше, що потрібно негайно перезаписати новими даними для ефективності.
Якщо ви дійсно хочете скасувати функцію, використовуйте керування джерелом. Subversion насправді дуже добре працює на машині одного користувача. Я використовую його для контролю всіх моїх особистих файлів у домашній системі. Здається, як надмір, до катастрофи не потрапляє шахрайський скрипт або друкарський рядок.
rm -r .
. ;)
rm -r project.git
. На щастя, якщо ви зберігаєте іншу версію на віддаленому сервері, що навряд чи станеться
rm -r .
. Дійсно дурний.
Одне, що я люблю додати до свого .bashrc, це функція копіювання та видалення. Щось на зразок:
cprm(){
cp -p $1 ~/deleted/$1
rm $1
}
Але вам доведеться ввійти в звичку вводити cprm не rm.
Очевидно, що вам потрібно буде тримати поверх видаленої області, якщо у вас обмежений простір на диску.
"$1"
.
GitFS - файлова система на основі запобіжників, яка автоматично розраховує diff
s між версіями та дозволяє відновити / переглядати їх.
Веб-сторінка: https://www.presslabs.com/gitfs
Документи: https://www.presslabs.com/gitfs/docs/usage/