Страница Wikipedia "Нетбук" перечисляет несколько основанные на ARM - и основанные на MIPS нетбуки.
Вы могли бы также посмотреть на смартфоны и КПК, которые запускают Linux; практически все они используют центральные процессоры ARM, и некоторая версия Linux была портирована многим из них.
rsync является, вероятно, лучшим инструментом для этого. Существует много опций на этой команде так страница справочника чтения. Я думаю, что Вы хотите - опция контрольной суммы или - игнорировать-времена
При использовании rsync --checksum
хороший общий способ "скопировать, если изменено", в Вашем особом случае существует еще лучшее решение!
Если Вы не хотите излишне перекомпилировать файлы, необходимо использовать кэш, который был создан для точно этой цели! На самом деле, мало того, что это избежит ненужный, перекомпилировал Ваших автоматически сгенерированных файлов, это также ускорит вещи каждый раз, когда Вы делаете make clean
и перекомпилируйте с нуля.
Затем я уверен, что Вы спросите, "Действительно ли это безопасно?" Ну, Да, как веб-сайт указывает:
Действительно ли это безопасно?
Да. Самый важный аспект кэша компилятора состоит в том, чтобы всегда производить точно тот же вывод, который произвел бы реальный компилятор. Это включает обеспечение точно тех же объектных файлов и точно тех же предупреждений компилятора, которые были бы произведены, если Вы используете реальный компилятор. Единственным путем необходимо смочь сказать об использовании кэша, скорость.
И это просто в использовании это, просто добавив его как префикс в CC=
строка Вашего make-файла (или можно использовать символьные ссылки, но make-файл путь, вероятно, лучше).
ccache file.c -o file.o
или эквивалент, несколько сотен времен, потому что существует несколько сотен file.c
файлы. Когда я делал это с cmp
, вместо ccache
, потребовалось несколько минут - и cmp
так же легко как ccache
. Проблема состоит в том, что, на Cygwin, запуская процесс занимает время, даже для абсолютно тривиального процесса.
– Brooks Moses
01.02.2012, 05:57
for f in src/*; do /bin/true.exe; done
занимает 30 секунд, так да. Так или иначе я предпочитаю своего редактора на базе Windows, и кроме этого вида синхронизации проблемы, Cygwin работает вполне хорошо с моим рабочим процессом как легкое место для тестирования вещей локально, если я не загружаю на серверы сборки. Полезно иметь мою оболочку и моего редактора в той же ОС. :)
– Brooks Moses
01.02.2012, 06:43
Мне нравится использовать унисон в пользу rsync
потому что это поддерживает несколько ведущих устройств, имение уже устанавливает мои ssh ключи и vpn отдельно.
Таким образом в моем crontab только одного хоста я позволяю им синхронизироваться каждые 15 минут:
*/15 * * * * [-z "$ (pidof унисон)"] && (унисон тайм-аута 25 м-sortbysize-ui текст - пакет - времена/home/master ssh://192.168.1.12//дом/ведущее устройство - соединяют dev каналом - файл журнала /tmp/sync.master.dev.log), и> /tmp/sync.master.dev.log
Затем я могу разрабатывать с обеих сторон, и изменения распространят. На самом деле для важных проектов у меня есть до 4 серверов, зеркально отражающих то же дерево (3 выполненных унисона от крона, указывая на тот, который не делает). На самом деле Linux и смешанные хосты Cygwin - кроме не ожидают смысла из гибких ссылок в win32 вне cygwin среды.
Если Вы идете этим путем, сделайте начальное зеркало на пустой стороне без -batch
, т.е.
unison -ui text -times /home/master ssh://192.168.1.12//home/master -path dev
Конечно, существует конфигурация для игнорирования файлов резервных копий, архивов, и т.д.:
~/.unison/default.prf :
# Unison preferences file
ignore = Name {,.}*{.sh~}
ignore = Name {,.}*{.rb~}
ignore = Name {,.}*{.bak}
ignore = Name {,.}*{.tmp}
ignore = Name {,.}*{.txt~}
ignore = Name {,.}*{.pl~}
ignore = Name {.unison.}*
ignore = Name {,.}*{.zip}
# Use this command for displaying diffs
diff = diff -y -W 79 --suppress-common-lines
ignore = Name *~
ignore = Name .*~
ignore = Path */pilot/backup/Archive_*
ignore = Name *.o
unison
опция, которая означает, "не обновляет file-last-modified даты". Есть ли один? Иначе это - большое решение совершенно другой проблемы.
– Brooks Moses
02.02.2012, 22:46
-times
делает это для меня. Унисон имеет режим пробного прогона также, меня думает.
– Marcos
03.02.2012, 00:29
times=false
(или кончающий -times
) сделал бы это. Я не знаю, как я пропустил это в документации прежде.Спасибо!
– Brooks Moses
03.02.2012, 01:56
Это должно сделать то, в чем Вы нуждаетесь
diff -qr ./x ./y | awk '{print $2}' | xargs -n1 -J% cp % ./y/
Где:
-J
bsd-конкретно; с GNU xargs это -I
), и не работает правильно, если тот же набор файлов уже не существует в обоих местах (если я touch x/boo
затем grep дает мне Only in ./x: boo
который вызывает ошибки в конвейере). Используйте инструмент, созданный для задания, как rsync --checksum
.
– aculich
31.01.2012, 01:24
Вы можете использовать переключатель -u
в cp
следующим образом:
$ cp -u [source] [destination]
Со страницы справочника:
-u, --update
copy only when the SOURCE file is newer than the destination file or
when the destination file is missing
Хотя rsync --checksum
является правильным ответом, обратите внимание, что этот вариант несовместим с --times
, и что --архив
включает --times
, так что если вы хотите rsync -a --checksum
, вам действительно нужно rsync -a --no-times --checksum
.
-t
опция указана) или ко времени синхронизации (если-t
не указан). – Brooks Moses 24.01.2012, 07:52rsync
не делает. Если я делаю это:mkdir src dest; echo a>src/a; rsync -c src/* dest; sleep 5; touch src/a; rsync -c src/* dest
, затемstat dest/a
показывает его mtime, и ctime равняются 5 secs более старый, чем теsrc/a
. – angus 24.01.2012, 10:48--checksum
опция, и хотя linux.die.net/man/1/rsync не содержит абсолютно ничего, что подразумевало бы, что она имеет любое влияние на том, обновляется ли дата модификации, она, тем не менее, заставляет целевую дату модификации быть оставленной нетронутой. (С другой стороны,--ignore-times
опция не имеет этого эффекта; с ним все еще обновляется дата модификации.), Учитывая, что это, кажется, совершенно не документировано, тем не менее, я могу полагаться на него? – Brooks Moses 24.01.2012, 11:32rsync
рабочий процесс: 1) проверьте, должен ли файл быть обновлен; 2) если так, обновите файл.--checksum
опция говорит, что не должна быть обновлена, таким образом,rsync
не должен продолжаться к шагу 2). – enzotib 24.01.2012, 12:25--ignore-times
без--checksum
скопировал бы каждый файл, и таким образом, также обновляют метку времени, даже если файлы идентичны. – enzotib 24.01.2012, 23:22