Показать полную графическую версию : [решено] Сравнение даты изменения файлов и замена старого на новый
Тема такая:
Есть игра, которая хранит сохранения в "блабла"
Есть 2 компьютера.
Проблема: поиграл в игру на одном компьютере, пересел за второй - а там нет сохранений. Приходится перетаскивать на флешке или ещё как.
Более гибкий выход - использовать Dropbox.
Что хотелось бы:
- поиграл в игру
- нажал на батник
- батник проверил наличие сохранений (и дату изменения если сохранения есть) в папке в Dropbox
- батник проверил дату изменения сохранений в "блабла"
- если сохранения в "блабла" новее то батник копирует их в папку на Dropbox с заменой
- переходим на другой комп
- запускаем батник
- батник проверяет опять там и там дату и заменяет в "блабла" новыми сохранениями
вот и всё, как и написано в сабже: проверка на новизну файла и замена старого на новый
Спасибо.
Poor Man Backup Using Robocopy, 7Zip and DropBox (http://radicaldevelopment.net/poor-man-backup-using-robocopy-7zip-and-dropbox/)
Не проще ли просто обойтись символическими ссылками?
Kazun, сейчас посмотрю
Не проще ли просто обойтись символическими ссылками? »что вы имеете ввиду?
что вы имеете ввиду? »
Есть некая
… игра, которая хранит сохранения в "блабла" »
Делаете связь каталогов или символическую ссылку с «блабла» в папку «%UserProfile%\Мои документы\Dropbox». И всё. Нужен только толстый канал и наличие заданного места (из выделенного на серверах Dropbox).
Делаете связь каталогов или символическую ссылку »расскажите на примере
как я понимаю сделать в папке "блабла" ссылку на файл в папке дропбокса?
как я понимаю сделать в папке "блабла" ссылку на файл в папке дропбокса? »
Неверно понимаете. Надо наоборот — создать в папке Dropbox'а ссылку на папку с сохранениями.
расскажите на примере »
Поскольку у меня Windows версии не 6.0, не 6.1 и не 6.2, а ниже — я хоть и могу создать символическую ссылку, но использовать её ОС не сможет. Посему в примере я создаю связь каталогов, используя «горячую» клавишу Alt-F6 в Far Manager'е. Вы можете использовать для создания связи утилиты командной строки, а если у Вас версия ОС от Vista и выше — попробовать и другой тип связи, например символическую ссылку на папку.
Например, есть у Вас некая игра «Some Game», её настройки хранятся у Вас, например, в «%AppData%» в папке «Some Game». Предположим, что, наряду с другими, внутри этой папки есть и папка «Saves», куда складываются сохранения игры. Тогда достаточно создать связь для этой папки «Saves» в папку Dropbox'а:
http://img268.imageshack.us/img268/8909/image00020121126220851.png
Не забывайте, что изначальный максимальный размер места, выделяемого Dropbox'ом — 2 Гб.
Спасибо за разъяснение.
так, значит ссылка на папку в «%AppData% будет лежать в папке на Dropbox, но игра же смотрит именно в «%AppData%.
или это работает как синхронизация: нужно открыть Far нажать Alt+F6 и тогда папки синхронизируются?
если да, то можно ли сделать так чтобы не открывать и не устанавливать дополнительных программ (Far), только для этого, можно ли обойтись стандартными средствами Windows.
И да, у меня Win7x64 на обоих компьютерах.
Tosyk, синхронизируются они примерно так:
1. Вы играете, сохраняетесь. В «%AppData%\Some Game\Saves» обновляется существующий файл/появляется новый файл. Поскольку созданная ссылка «%UserProfile%\Мои документы\Dropbox\Saves» указывает на «%AppData%\Some Game\Saves» — файлы будут видны и там. Запущенный клиент «Dropbox.exe» обнаруживает, что содержимое в подконтрольной ему папке «%UserProfile%\Мои документы\Dropbox» изменилось и начинает синхронизацию этого содержимого с Вашей учётной записью на своих серверах (в данном случае — выгрузку).
2. Вы приходите в место N, запускаете машину, регистрируетесь под своей учётной записью. Клиент «Dropbox.exe» после своего запуска связывается с Вашей учётной записью на своих серверах, обнаруживает устаревание содержимого подконтрольной ему папки «%UserProfile%\Мои документы\Dropbox» и начинает синхронизацию этого содержимого с Вашей учётной записью на своих серверах (в данном случае — загрузку). Поскольку созданная ссылка «%UserProfile%\Мои документы\Dropbox\Saves» указывает на «%AppData%\Some Game\Saves» — файлы на самом деле будут сохраняться именно в «%AppData%\Some Game\Saves». По завершении синхронизации можете приступать к игре.
Естественно, описанную операцию по созданию ссылки из «%AppData%\Some Game\Saves» в «%UserProfile%\Мои документы\Dropbox» нужно проделать один раз на всех машинах, где Вы будете играть. Равно как и установить клиент Dropbox.
… можно ли сделать так чтобы не открывать и не устанавливать дополнительных программ (Far), только для этого, можно ли обойтись стандартными средствами Windows. И да, у меня Win7x64 на обоих компьютерах. »
Можно. Воспользуйтесь, например, информацией по командам отсюда: Символьная ссылка — Википедия (http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0). Детали можете почитать у Вадима: Как работают жесткие и символические ссылки | Вадим Стеркин (http://www.outsidethebox.ms/12735/). Сам я не могу дать Вам готовую команду, поскольку у меня не Windows 7.
Iska, создаю я значит ссылку на ПЕРВОМ компьютере, появляется символическая в дропбоксе, всё отлитчно (хотя отличить от обычной ссылки её невозможно).
соответственно дропбокс на ВТОРОМ компьютере закачивает этот файл к себе.
пробую создать символическую ссылку на ВТОРОМ компьютере, говорит файл уже есть! окей, удаляю файл со ВТОРОГО компьютера из дропбокса и делаю ссылку и создаётся символическая ссылка в дропбоксе на ВТОРОМ компьютере, но
в итоге ничего не синхронизирцется, при изменении файла на ВТОРОМ компьютере файл на ПЕРВОМ компьютере не меняется!
сомневаюсь что и жёсткие ссылки помогут
но может быть у вас есть какие-то мысли по этому поводу?
Iska, создаю я значит ссылку на ПЕРВОМ компьютере, появляется символическая в дропбоксе, всё отлитчно »
Пока всё верно.
(хотя отличить от обычной ссылки её невозможно). »
Я — отличаю:
http://img844.imageshack.us/img844/9779/image00120121128051557.png
соответственно дропбокс на ВТОРОМ компьютере закачивает этот файл к себе. »
Вы на второй машине сначала создаёте ссылку с «%AppData%\Some Game\Saves» в «%UserProfile%\Мои документы\Dropbox» (т.е. — те же действия, что и на первой машине), а затем только подключаетесь к интернету.
Я попробую смоделировать сегодня ситуацию у себя.
в общем пришёл к понимаю, что dropbox не взаимно синхронизирует файлы с одинаковыми именами, а переименовывает на одной из машин файл с таким же именем (не понятно как он выбирает на какой машине это делать, у меня переименовал более новый файл) в
test (USERNAME-PC's conflicted copy 2012-11-29).ini
и помимо переименования закачивает на машину ещё и файл с таким же именем с другой машины, в итоге у нас есть 2 файла:
test (USERNAME-PC's conflicted copy 2012-11-29).ini (является переименованной символьной ссылкой)
test.ini (является вновь закачанным файлом)
для теста создал файл test.ini на обеих машинах
всё делал через teamviewer с отключёным dropbox'ом, после чего практически секунда в секунду включил dropbox на обеих машинах, ждал
есть у вас какие-нибудь мысли по этому поводу?
Tosyk, проверил. Сработало обратное: создание ссылки с папки в каталоге Dropbox'а в каталог игры. Т.е., на первой машине Вы берёте каталог с сохранениями и перемещаете его в папку Dropbox'а. Затем создаёте ссылку с этой папки, находящейся в каталоге Dropbox'а, в каталог игры (под тем же именем). На прочих машинах — сначала дожидаетесь, пока Dropbox не синхронизирует папку со своим сервером, затем удаляете папку с сохранениями из каталога игры и делаете ссылку с папки, находящейся в каталоге Dropbox'а, в каталог игры (под тем же именем).
Понятно? Пробуйте.
Iska, вполне логично и всё работает.
есть пару моментов:
1 - увеличивается размер занимаемого места в Dropbox
2 - при создании игрой новых сохранений/файлов их придётся вручную переносить в Dropbox, что собственно ломает половину идеи
- можно ли сделать линк для всей папки, чтобы при сохранении игра сохраняла оригинал файла в Dropbox? а в своей папке хранила только ярлык
- можно ли определить имя текущего пользователя (%USERNAME%) и подставлять это имя в .cmd вида:
"C:\Users\%USERNAME%\AppData\Local\SOMEGAME\Savegames\savegame00.dat" "D:\My Dropbox\Public\00-archive\01-games\00-savegames\SOMEGAME\Savegames\savegame00.dat"
это для того чтобы при переходе на другой компьютер запускать скрипт, который все ссылки сделает сам туда куда нужно
спасибо вам огромное в любом случае, половина того, что я хотел сделано даже проще чем я мог подумать.
2 - при создании игрой новых сохранений/файлов их придётся вручную переносить в Dropbox, »
С чего бы это вдруг? Они сразу попадают с папку DropBox'a, поскольку теперь папка с сохранениями в игре — это ссылка на папку в DropBox'е.
- можно ли сделать линк для всей папки, чтобы при сохранении игра сохраняла оригинал файла в Dropbox? »
Ну, а я про что писал выше? Вы сделали как-то иначе?
Iska, ах, точно на папку, вижу, а я делал на каждый файл, хм, что-то не получилось у меня в первый раз сделать ссылку на папку
её мы делаем командой: mklink /D ?
edit:
всё отлично работает! спасибо!
и всё таки можно как то определить имя текущего пользователя, чтобы подставить его в скрипт?
её мы делаем командой: mklink /D ? »
Я же писал выше — у меня не Vista, и не Windows 7. Смотрите сами.
и всё таки можно как то определить имя текущего пользователя, чтобы подставить его в скрипт? »
Тут Вам «%UserName%» даже не нужен. Берите сразу «%AppData%».
Тут Вам «%UserName%» даже не нужен. Берите сразу «%AppData%». »кстати да, спасибо огромное! буду пробовать
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.