Я недавно купил Nexus 4 и хочу перенести на него фотографии с моего предыдущего устройства. В моем предыдущем Android-телефоне использовалось стандартное запоминающее устройство USB, которое создавало 0 проблем при копировании туда и обратно, но Nexus 4, как и многие другие современные Android-телефоны, я полагаю, вместо этого использует MTP, который имеет интересную особенность отказа от копирования оригинала. даты/временные метки файлов, используя вместо этого дату, когда файлы копируются.
Это, очевидно, огромный облом, когда дело доходит до фотографий; не только потому, что невозможно проверить исходную дату, когда была сделана фотография при просмотре на телефоне, но и потому, что они в конечном итоге совершенно не отсортированы.
Есть ли способ перенести фотографии на Android-телефон Jelly Bean, который не поддерживает USB-накопитель с сохранением исходных временных меток?
Вещи, которые я пробовал до сих пор:
Ни один из них не сохранил метку времени, и это сводит меня с ума.
(Кроме того, у меня еще нет root-прав, но если для единственного жизнеспособного способа требуется root, я бы также приветствовал этот ответ.)
Вы не можете, это текущая проблема с разрешением ( отчет об ошибке здесь ) папки /sdcard Android 4.0+, если она не использует FAT32 (но FUSE).
Причина: Произошел переход от FAT32 к унифицированному пользовательскому хранилищу для приложений и мультимедийных данных (с использованием ext4) в одной файловой системе.
Нам надоело видеть, как OEM-производители включают много ГБ внутренней памяти для музыки, в то время как пользователям по-прежнему не хватало места для приложений и данных. Этот подход позволяет нам объединить все в один том, что намного лучше.
— Дэн Моррилл, инженер Android в Google.
Старые свойства FAT32 эмулируются с использованием слоя FUSE для совместимости с существующими приложениями. Кроме того: /data/ и /sdcard на устройствах Google, начиная с Nexus 7, используют только один раздел (/data/media представляет содержимое «sdcard» и отображается для приложений с помощью уровня FUSE).
Вот реализация CyanogenMod драйвера FUSE, если вам интересно посмотреть исходный код. Однако похоже, что установка атрибутов временной метки реализована.
РЕДАКТИРОВАТЬ: Это работает только с root.
Точная причина: Все файлы принадлежат root.sdcard_rw (см. здесь ).
Вызывающий абонент без h uid=0 не может вызвать системный вызов utimensat() , он уже дает сбой на уровне VFS (EPERM) для меток времени, отличных от текущих:
- эффективный идентификатор пользователя вызывающего абонента должен совпадать с владельцем файла; или же
- вызывающая сторона должна иметь соответствующие привилегии.
Чтобы внести какие-либо изменения, кроме установки обеих временных меток на текущее
время (т. е. время не равно NULL, и оба поля tv_nsec не имеют
значения UTIME_NOW, а оба поля tv_nsec не имеют значения UTIME_OMIT),
должно применяться условие 2 или 3 выше.
Недавно я столкнулся с этой проблемой на Nexus 5 и безуспешно пробовал большинство перечисленных здесь решений. В моем случае это, похоже, вызвано известной ошибкой со стандартным Android ( источник ).
Мое решение было следующим: я использовал Windows 8.1, но нет причин, по которым это не сработает на OSX/Linux (однако на устройстве требуется root).
На своем ПК создайте архив .tar.gz со всеми файлами, которые вы хотите передать.
Перенесите архив на устройство с помощью FTP, убедившись, что используется команда MFMT.
На устройстве распакуйте архив в оболочку от имени пользователя root.
su
команды. Возможно, вам потребуется предоставить доступ, если появится SuperSU.cd /sdcard/
tar -xvf ARCHIVE_NAME_HERE.tar.gz
DCIM/Camera
каталог, изображения вообще не отображались в приложении стоковой галереи. Если это произойдет с вами, я предлагаю вам извлечь файлы в другой каталог, а затем переместить (не копировать) файлы в каталог вашей камеры. Я подозреваю, что это вызвано проблемой с разрешениями. Вы можете использовать терминал или файловый менеджер для перемещения файлов.Это позволило сохранить все атрибуты «даты изменения» файлов и оставить все фотографии в правильном порядке при просмотре в приложении галереи.
Проверьте данные EXIF и посмотрите, есть ли там отметка времени.
Если есть, коррекция даты фотографии позволит вам перезаписать временную метку ошибочного файла на EXIF, вернув вам правильную сортировку.
Это вопрос, который меня очень беспокоит, когда я сталкиваюсь с устройствами, которые имеют только MTP, но не режим Mass Storage. У меня также есть опасения по этому поводу по тем же причинам, что и у Мана.
После некоторого тестирования я нашел временное решение, которое, возможно, сможет сохранить отметку времени.
Он использует внешний кард-ридер sdcard / OTG, а также команду cp с -a, которая позволяет сохранить отметку времени. Но требование - телефон должен быть рутирован.
Как упоминалось в другом ответе, на устройствах, которые используют FUSE для эмуляции SD-карты (например, современные устройства Nexus), только root может изменять временные метки файлов в формате /sdcard
. Поскольку такие вещи, как MTP и ADB, не запускаются от имени пользователя root, вы не можете сохранить временные метки с помощью этих методов. Однако, если ваше устройство рутировано, вы можете исправить метки времени с помощью отдельного шага позже.
При восстановлении полной резервной копии /sdcard
с ПК с Linux на планшет я использовал эту команду, чтобы исправить все метки времени после загрузки файлов с помощью adb push
:
find . | while read file; do timestamp_stat=$(stat -c "%y" "$file"); timestamp=$(date +"%Y%m%d.%H%M%S" -d "$timestamp_stat"); echo "$timestamp: $file"; adb shell su -c "touch -t $timestamp \"/sdcard/$file\""; done
Это должно быть запущено из корня каталога на ПК, который соответствует /sdcard
на устройстве. (Или, если вы загрузили что-то, кроме полной /sdcard
резервной копии, измените путь в touch
команде ближе к концу. Но вы должны запустить это из любого каталога на ПК, соответствующего каталогу в touch
команде.)
Это работает так: он просматривает все файлы на стороне ПК, получает метку времени каждого и запускает touch
команду от имени пользователя root на устройстве, чтобы установить там метку времени соответствующего файла.
Обратите внимание, что это запустит отдельную su
команду для каждого отдельного файла. Если в вашей корневой программе (например, SuperSU) включено ведение журнала, вы можете отключить его, чтобы избежать создания большого количества записей в журнале. И если ваше устройство настроено на запрос подтверждения при каждом su
запросе, вы, вероятно, захотите временно изменить это. (Возможно, можно придумать вариант, который направляет поток touch
команд в единую корневую оболочку на устройстве, но простой способ сделать это не сработал, когда я пробовал, и я не хотел тратить много времени на это)
Я успешно использовал это на Nexus 10 под управлением Android 5.1.
У меня точно такая же проблема. Кажется, что он блокируется предохранителем на Nexus 4 с Stock JellyBean 4.2.1.
SYMLINKS:
/sdcard -> /storage/emulated/legacy
/storage/emulated/legacy -> /mnt/shell/emulated/0
MOUNT POINT:
/mnt/shell /dev/fuse /mnt/shell/emulated fuse \
rw,nosuid,nodev,relatime,user_id=****,group_id=****,default_permissions,allow_other 0 0
Эта информация была получена через сеанс оболочки adb; Я предполагаю, что предохранитель будет использоваться для всех учетных записей уровня приложения.
TL; DR Судя по всему, это невозможно сделать без рутирования телефона.
[old_pictures]$ for f in $(ls -1 * | sort -t _ -k 2); do adb push $f /storage/sdcard0/DCIM/Past/; sleep 3; done;
Если вы идете по этому пути, сначала выполните тестовую загрузку, чтобы убедиться, что вы удовлетворены. Кроме того, отключите мгновенную загрузку в Google+, чтобы избежать «двойных загрузок».Если вы используете приложение Google Photo и хотите, чтобы ваш файл отображался в правильном порядке, есть решение.
Предыстория вопроса
Это ошибка Android. Это не позволяет пользователю без полномочий root изменять дату модификации файлов ( https://code.google.com/p/android/issues/detail?id=18624 с момента введения многопользовательской/песочницы с файловой системой FUSE) . И не сохраняет метку времени при копировании файлов по протоколу MTP ( https://code.google.com/p/android/issues/detail?id=92635 ).
Обходной путь для пользователей Google Фото
Фотографии упорядочены с использованием информации EXIF, если она доступна, поэтому вы можете просто использовать любые способы установки для них правильных данных EXIF. Любая камера должна установить это автоматически для вас, просто убедитесь, что в них правильно установлены дата/время.
Для видео или если вы не хотите устанавливать данные EXIF, просто перейдите на https://photos.google.com/ и загрузите оттуда свое видео/фотографии. Он сохраняет временную метку модификации, которая у вас есть на вашем компьютере, и, поскольку она синхронизируется с вашим устройством, вы увидите фотографию в приложении, правильно отсортированную, как только вы закончите загрузку.
Используйте инструмент синхронизации, такой как, например , FolderSync , который должен соответствующим образом заботиться о временных метках. Инструменты синхронизации должны быть специализированы для обработки всех аспектов реального поддержания синхронных копий, включая, конечно, метки времени.
СОХРАНЕНИЕ ДАТЫ, ИЗМЕНЕННОЙ НА УСТРОЙСТВЕ NEXUS --- КОРЕНЬ НЕ ТРЕБУЕТСЯ ---
ваше здоровье.. :)
он сохраняет дату изменения. Я не знаю, как это делает Droid Explorer. но это просто работает.
убедитесь, что USB-отладка отмечена перед использованием Droid Explorer.
гм... есть одно ограничение... Droid Explorer может передавать только файлы, но не папки.
Используйте PTP вместо MTP при подключении телефона через USB. У меня это работает, я использую Samsung Note 4, подключенный к машине с Ubuntu 14.04. Однако подключение в качестве PTP позволяет копировать только изображения/изображения. Все другие методы копирования файлов (Bluetooth, WIFI, файловый менеджер) на внешний диск изменят дату.
Вы можете использовать адб
Включите режим разработчика на мобильном устройстве.
Включите отладку универсальной группы безопасности на мобильных устройствах.
Установите ADB на свой ноутбук.
Подключите свой мобильный телефон к ноутбуку с помощью USB.
Откройте терминал своего ноутбука и войдите в свой мобильный, используя приведенные ниже команды.
adb-устройства adb-оболочка
Найдите точный путь, куда вы хотите поместить свои файлы.
Выйдите из оболочки adb с помощью команды exit.
Используйте приведенную ниже команду для передачи файлов с вашего ноутбука на мобильный без каких-либо метаданных (созданного/измененного времени)
adb push source_path target_mobile_path
Вы можете отправлять папки и несколько файлов с помощью adb push
команды за один раз.
Вы можете использовать ту же процедуру и команду adb pull source_mobile_path target_laptop_path
для копирования файлов с мобильного телефона на ноутбук, не затрагивая даты.
Мое решение сохранить дату модификации при копировании файла на Android-устройство с помощью MTP:
Проверено на LG G2 (без рута), Andorid 4.4.2 и HTC one M7, Andorid 4.4.2:
Насколько я вижу, даты модификации полностью сохранены!
Решение для резервного копирования с использованием «SanDisk Memory Zone» для сохранения отметки времени. копирование/перемещение файлов с устройства Android на внешнюю SD-карту — протестировано на Samsung Note 2, Note 3 и Mini SIII
Просто создайте резервную копию ваших фотофайлов на SDCard и переместите карту на другое устройство Android, ПК, Apple или другое устройство — если вы не используете для резервного копирования свои фотофайлы, следуйте этим простым инструкциям из 8 шагов».
Быстрое и простое решение: просто используйте ПК или Mac для копирования файлов со старой SD-карты (или ПК) на новую SD-карту. Используйте ПК/Mac с устройством чтения/записи SD-карт (существуют преобразователи USB-SD-карт), которое видит карту как USB-накопитель FAT32. Когда вы закончите копирование, снова вставьте новую карту в телефон и перезагрузите компьютер.
Я перешел на Moto X 2014 года, и у меня возникла эта проблема.
Я также пробовал много вещей, решение, казалось, было «Motorola Migrate» для синхронизации с WiFi двух телефонов (старый пряничный бэкфлип). В галерее все было хорошо (даже в деталях), но странно в файловом менеджере менялась дата, а через несколько часов даже в галерее показывалась дата переноса.
Обходной путь, если файлов не слишком много, можно было бы вручную копировать по одному, меняя каждый раз дату и час на телефоне.
У меня Nexus 4, и у меня была такая же проблема с отметкой времени и фотографиями (действительно со всеми файлами).
Вот командные строки (с рутированным телефоном), которые я использовал благодаря сообщению об Ubuntu:
sudo apt-get install android-tools-adb
(в Ubuntu, если Android SDK не установлен)
adb devices
cd /media/my_backup_folder_where_i_put_a_folder_with_all_my_data_named_"savandroid"_in_it
Для того, чтобы зайти в мою папку "backup", которая содержит папку "savandroid"
adb root
adb push savandroid /sdcard
Все файлы и папки, которые находятся в «saveandroid», отправляются на SD-карту, все работает правильно, все временные метки правильные!
Примечание . В Cyanogenmod мне пришлось выбрать root для «приложений и adb» в меню разработчиков. По умолчанию он установлен только в приложениях.
Я добавлю свое решение, которое работало на Ubuntu
Сначала установите simple-mtpfs и установите предохранитель
cd ~
mkdir myphone
simple-mtpfs ~/myphone
Теперь у вас есть папки вашего телефона, смонтированные в этом каталоге, вы можете использовать rsync -t
или cp -p
копировать изображения, и время создания/изменения/доступа не изменится.
Работай на меня :)
Чтобы скопировать файлы с Android на компьютер с сохранением временных меток:
adb shell tar c -C /storage/emulated/0/XXX . | tar xv
Чтобы восстановить их обратно на Android:
tar c . | adb shell tar xv -C /storage/emulated/0/XXX
Это работает путем создания tar-файла на устройстве, который сразу же извлекается на вашем хосте, и наоборот.
«v» позволяет увидеть имя копируемого файла.
Конечно, это предполагает, что у вас установлен «adb», что на телефоне включена отладка по USB и что вы уже подтвердили сертификат отладки.
sudo apt install adb
Попробуйте приложение «Bluetooth File Transfer», оно сохраняет измененную дату при перемещении. И я верю, что с копированием тоже, но сначала попробуйте с одним файлом / папкой, чтобы убедиться. Он также может исследовать другое устройство через bluebooth.
Используйте SyncMe Wireless и сетевой ресурс. Временные метки сохраняются, и синхронизация происходит быстро. Я смог выполнить резервное копирование без компьютера на SD-карту в Kingston MobileLite Wireless за 20 минут, мгновенная повторная синхронизация.
Шанс
Ман