Это кажется вариантом использования для dm-userspace+cowd: в сущности Вы настроили бы цель DM (блочное устройство), состоящее из COW (копия на записи) файл и блочное устройство, соответствующее Вашей карте с интерфейсом USB, и использовали бы его для хостинга файловой системы. Все обновления перешли бы к файлу COW; чтения, которые не находятся в файле COW, были бы поданы от карты с интерфейсом USB; после размонтирования файловой системы, модификаций слияния из файла COW в карту с интерфейсом USB.
К сожалению, это - конкретный Linux, и разработка, кажется, остановилась в 2007.
Если то, что Вы хотите сделать, является sync'ing файлами через два (или больше) ПК, я могу предположить, что Вы помещаете свой дом (или соответствующие папки) под системой управления версиями? Обычный цикл работы становится как это:
Это - только одна запись к карте с интерфейсом USB. (Хотя я соглашаюсь с тем, какие другие сказали, который к этому времени yoru карта с интерфейсом USB изнашивается, Вы, вероятно, купите другого - больший.)
Можно использовать команду статистики для проверки времени изменения файла прежде и после nano
. Что-то как:
oldtime=`stat -c %Y "$filename"`
nano "$filename"
if [[ `stat -c %Y "$filename"` -gt $oldtime ]] ; then
echo $filename has been modified
fi
Конечно, это не обнаружит ли nano
измененный файл или некоторая другая программа сделал, но это можно было считать функцией. (Можно использовать некоторую другую программу, чтобы отредактировать файл и затем выйти nano
без сохранения.)
Недавно я пытался сделать что-то подобное, в конце концов я использовал модификацию подхода @cjm.
Прежде всего, под руководством Дарвина я использовал stat -f% m
, чтобы получить время (в секундах) с момента изменения файла.
Это работает хорошо, но есть небольшая вероятность, что пользователь сохранит и выйдет из редактора в ту же секунду, что и изменение, сделанное вашим скриптом. Чтобы решить эту проблему, я вручную увеличиваю время изменения файла на одну секунду с помощью касания.
#!/bin/bash
echo "some text" > myfile.txt
touch -A -01 myfile.txt
oldtime=`stat -f %m myfile.txt`
vi myfile.txt
if [[ `stat -f %m myfile.txt` -gt $oldtime ]] ; then
echo "file was edited"
fi