Como posso transferir fotos para o meu dispositivo Android Jelly Bean, preservando o carimbo de data / hora original?


25

Comprei recentemente um Nexus 4 e gostaria de transferir minhas fotos do meu dispositivo anterior para ele. Meu telefone Android anterior usava o armazenamento em massa USB padrão, que dava 0 problemas para copiar coisas de um lado para outro, mas o Nexus 4, como muitos outros telefones Android modernos, suponho, usa o MTP, que tem o recurso interessante de se recusar a copiar o original datas / timestamps dos arquivos, usando a data em que os arquivos estão sendo copiados.

Obviamente, isso é uma chatice enorme quando se trata de fotos; não apenas porque não é possível verificar a data original em que a foto foi tirada enquanto você navega no telefone, mas também porque elas acabam completamente sem classificação.

Existe uma maneira de transferir fotos para um telefone Android Jelly Bean que não suporta armazenamento em massa USB, preservando os carimbos de data e hora originais?

Coisas que eu tentei até agora:

  • Transferindo via USB MTP
  • Envio do ADB (pastas completas e arquivos individuais)
  • Transferindo via SSH (usando SSHDroid + WinSCP)
  • Upload e download do Dropbox
  • Transferindo um arquivo ZIP via MTP e descompacte o arquivo no telefone
  • Transferindo do outro telefone via bluetooth
  • Função QuickPic "data fixa"
  • Sincronização local
  • Correção de data da foto
  • FTPSyncX
  • Sinais de fumaça
  • Gritando no telefone

Nenhum deles preservou o registro de data e hora, e isso está me deixando louco.

(Além disso, ainda não estou enraizado, mas se a única maneira viável exigir raiz, eu também agradeceria essa resposta.)


O Android é compatível com arquivos .tar de desmarcação? Nesse caso, talvez você possa copiar um arquivo .tar das fotos. Não sei se o desmarcador alteraria o carimbo de data e hora dos arquivos individuais ou não.
Chance

@ Chance tentou isso antes, mas também não ajudou; o problema é que nada tem privilégios para escrever o carimbo de data / hora por padrão, portanto, não há nada que você possa fazer além de fazer o root agora.
Mahn

Além disso, para todos que participaram desta pergunta: Obrigado. Como os sites SE funcionam, posso aceitar apenas uma resposta, mas todas as respostas aqui ajudaram de uma maneira ou de outra.
Mahn

Respostas:


10

Não é possível, este é um problema de permissão atual ( relatório de erros aqui ) da pasta sdcard do Android 4.0 + se não estiver usando o FAT32 (mas o FUSE).

Razão: Há uma transição do FAT32 para o armazenamento unificado do usuário para aplicativos e dados de mídia (usando ext4) em um único sistema de arquivos.

Nós estávamos cansados ​​de ver que os OEMs incluíam muitos GB de armazenamento interno para música, enquanto os usuários ainda estavam sem espaço para aplicativos e dados. Essa abordagem permite mesclar tudo em um volume, o que é muito melhor.

- Dan Morrill, engenheiro Android do Google

As propriedades antigas do FAT32 são emuladas usando uma camada FUSE para serem compatíveis com os aplicativos existentes. Além disso: / data / e / sdcard nos dispositivos Google que começam com o Nexus 7 usam apenas uma única partição (/ data / media representa o conteúdo "sdcard" e é exposto usando a camada FUSE aos aplicativos).

Aqui está a implementação do driver FUSE da CyanogenMod, se você estiver interessado em ver a fonte. Parece que a configuração de atributos de carimbo de data e hora está implementada.

EDIT: Funciona apenas com root.

Razão exata: todos os arquivos pertencem a root.sdcard_rw (veja aqui ).

Um chamador sem uid = 0 não pode chamar o syscall utimensat () , ele já falha na camada VFS (EPERM) para registros de data e hora diferentes da atual:

  1. o ID do usuário efetivo do chamador deve corresponder ao proprietário do arquivo; ou
  2. o chamador deve ter privilégios apropriados.

Para fazer qualquer alteração que não seja definir os dois carimbos de data / hora no
horário atual (ou seja, os horários não são NULL e os dois campos
tv_nsec não são UTIME_NOW e os dois campos tv_nsec não são UTIME_OMIT), as condições
2 ou 3 acima devem ser aplicadas.


Obrigado pela informação, esperamos que isso seja algo que o google possa e estaria disposto a resolver, porque, tanto quanto posso dizer, o problema não é a camada de fusível ou o protocolo mtp, mas os privilégios estritos que foram definidos lá, que pelo parece ser bastante recente (4.2.1?), pois o aplicativo Photo Date Correction publicado abaixo parecia funcionar com dispositivos mais antigos, baseados em fusíveis / mtp 4.0, como o galaxy nexus.
Mahn

2
Atualização para futuros leitores: isso permanece sem correção no 4.2.2.
Mahn

2
Atualização para leitores ainda mais futuros: sem correção no marshmallow 6.0.
Mahn

6

Recentemente, deparei com esse problema em um Nexus 5 e tentei a maioria das soluções listadas aqui sem sorte. No meu caso, parece ter sido causado por um bug reconhecido no estoque Android ( fonte ).

Minha solução foi a seguinte - usei o Windows 8.1, mas não há razão para que isso não funcione no OSX / Linux (a raiz é necessária no dispositivo).

  1. No seu PC, crie um arquivo .tar.gz de todos os arquivos que você deseja transferir.

    • Usei o 7zip para isso - vale a pena mencionar no Windows, você precisará criar o arquivo .tar primeiro e depois aplicar a compactação .gz.
  2. Transfira o arquivo morto para o dispositivo usando FTP, garantindo que o comando MFMT seja usado.

    • O servidor FTP suporta MFMT no lado do dispositivo. Basta instalar e ativar, nenhuma configuração extra é necessária.
    • No PC, usei o Filezilla - você precisa garantir que Transferir> Preservar carimbos de data e hora dos arquivos transferidos esteja marcado.
  3. No dispositivo, extraia o arquivo morto em um shell como raiz.

    • Usando o Emulador de Terminal , primeiro verifique se você tem acesso root usando o sucomando Pode ser necessário conceder acesso se o SuperSU aparecer.
    • Navegue para o diretório agora contendo o arquivo .tar.gz com o comando cd, por exemplo: cd /sdcard/
    • Extraia o arquivo morto usando o seguinte: tar -xvf ARCHIVE_NAME_HERE.tar.gz
    • Nota: Por algum motivo, quando extraí diretamente no DCIM/Cameradiretório, as imagens não apareceriam no aplicativo da galeria de ações. Se isso acontecer com você, sugiro que você extraia para um diretório diferente e mova (não copie) os arquivos para o diretório da câmera. Eu suspeito que isso seja causado por um problema de permissão. Você pode usar o terminal ou o gerenciador de arquivos de sua escolha para mover os arquivos.
  4. Reinicie por uma boa medida.

Isso permitiu que todos os atributos 'data da modificação' dos arquivos permanecessem intactos e deixou todas as fotos na ordem correta quando exibidas no aplicativo da galeria.


Eles não aparecem na galeria por causa do índice de mídia. Ele não reconhece a operação do terminal, mas se você usar um aplicativo gerenciador de arquivos, ele relata os novos arquivos movidos para o índice e agora eles são encontrados novamente. Tem certeza de que a parte ftp é realmente necessária? Gostaria de saber porque o ftp não pode alterar os arquivos que estão dentro do tar, então por que isso deveria ser importante?
mgutt 30/05

@mgutt Acho que você está certo sobre a parte do FTP não ser necessária. Eu estava reunindo informações de outras soluções de sugestões e foi isso que acabou funcionando para mim!
precisa saber é o seguinte

4

Verifique os dados EXIF ​​e veja se há um carimbo de data / hora lá.

Se houver, a Correção de data da foto permitirá substituir o registro de data e hora do arquivo danificado pelo EXIF, devolvendo a classificação correta.


Nada. Os dados EXIF ​​estão lá, e o aplicativo relatou ter alterado com sucesso os carimbos de data e hora quando eu os usei, mas eles permaneceram os mesmos; Reiniciei e excluí o cache da galeria também, mas isso não ajudou. O aplicativo requer raiz? Parece que havia algum tipo de proteção contra gravação nos registros de data e hora que nada é capaz de superar.
Mahn

4

Essa é uma pergunta que realmente me incomoda muito quando se depara com dispositivos que possuem apenas MTP, mas não o modo de armazenamento em massa. Eu também tenho preocupações com isso exatamente pelas mesmas razões de Mahn.

Após alguns testes, encontrei uma solução temporária que talvez consiga preservar o registro de data e hora.

Utiliza o leitor de cartão sdcard / OTG externo e também o comando cp com -a o carimbo de data / hora será capaz de preservar. Mas o requisito é que o telefone precise estar enraizado.

  1. Primeiro copie os dados para o cartão SD.
  2. Leia-o com slot para cartão de memória / leitor de cartão OTG
  3. use shell adb e adquira permissão root (su)
  4. cp -a * os dados do cartão para a memória interna.

4

Como mencionado em outra resposta, em dispositivos que usam o FUSE para emulação de cartão SD (como dispositivos modernos Nexus), somente o root pode alterar os registros de data e hora dos arquivos /sdcard. Como coisas como MTP e ADB não são executadas como raiz, não é possível preservar os registros de data e hora com esses métodos. No entanto, se o seu dispositivo estiver enraizado, você poderá corrigir os carimbos de data e hora com uma etapa separada posteriormente.

Ao restaurar um backup completo de /sdcardum PC Linux para o meu tablet, usei este comando para corrigir todos os carimbos de data e hora após o upload dos arquivos com 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

Isso deve ser executado a partir da raiz do diretório no PC que corresponde ao /sdcarddispositivo. (Ou, se você fez o upload de algo diferente de um /sdcardbackup completo , altere o caminho no touchcomando próximo ao final. Mas você deve executá-lo a partir de qualquer diretório no PC que corresponda ao diretório no touchcomando.)

O modo como funciona é que ele percorre todos os arquivos no PC, obtém o registro de data e hora de cada um e executa um touchcomando como raiz no dispositivo para definir o registro de data e hora do arquivo correspondente.

Observe que isso executará um sucomando separado para cada arquivo individual. Se você tiver ativado o log no seu programa raiz (por exemplo, SuperSU), convém desativá-lo para evitar a produção de um grande número de entradas de log. E se você tiver seu dispositivo configurado para solicitar confirmação em cada susolicitação, provavelmente desejará alterá-lo temporariamente. (Pode ser possível criar uma variação que canalize um fluxo de touchcomandos em um único shell raiz no dispositivo, mas a maneira direta de fazer isso não funcionou quando eu tentei e não queria gastar muito tempo.)

Eu usei isso com sucesso em um Nexus 10 com Android 5.1.


2

Eu tenho exatamente o mesmo problema. Parece que está sendo bloqueado por um fusível no Nexus 4 executando o 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

Essa informação foi obtida por meio de uma sessão de shell adb; Presumo que o fusível esteja na mistura para todas as contas no nível do aplicativo.

TL; DR Pelo que parece, isso não pode ser feito sem fazer o root do telefone.


11
Por enquanto, minha "solução" é enviar fotos de telefones antigos, uma de cada vez, em ordem cronológica, com pausas no meio, em um diretório diferente. Aqui está o script de shell do Linux que estou usando: [old_pictures]$ for f in $(ls -1 * | sort -t _ -k 2); do adb push $f /storage/sdcard0/DCIM/Past/; sleep 3; done; Se você seguir esse caminho, faça um upload de teste primeiro para ter certeza de que está satisfeito. Além disso, desative o Instant Upload do Google+ enquanto estiver fazendo isso para não receber "envios duplos".
Turtle

Obrigado, isso ajuda; como no script for: mtp via windows e adb push eliminam a conexão para mim depois dos primeiros mil arquivos, mais ou menos no meu caso, além de alguns arquivos aleatoriamente acabarem corrompidos, você está vendo o mesmo? basicamente, como esse problema descreve aqui: code.google.com/p/android/issues/detail?id=35185 (talvez eu deva fazer uma pergunta separada, pois isso não está diretamente relacionado aos carimbos de data / hora. É preciso amar o mtp)
Mahn

2

Se você usa o aplicativo Google Photo e deseja que seu arquivo seja listado na ordem correta, existe uma solução.

Os antecedentes da questão

Este é um bug do Android. Ele não permite que usuários não root alterem a data de modificação dos arquivos ( https://code.google.com/p/android/issues/detail?id=18624 desde a introdução do multiusuário / sandbox com o sistema de arquivos FUSE) . E não preserva o registro de data e hora ao copiar arquivos com o protocolo MTP ( https://code.google.com/p/android/issues/detail?id=92635 ).

A solução alternativa para usuários do Google Photo

As fotos são ordenadas usando as informações EXIF, se disponíveis, para que você possa usar apenas algumas maneiras de definir os dados EXIF ​​certos. Qualquer câmera deve definir isso automaticamente para você, apenas verifique se a data / hora estão corretas.

Para vídeos ou se você não deseja definir os dados EXIF, acesse https://photos.google.com/ e faça upload de seus vídeos / fotos a partir daí. Ele preserva o carimbo de data / hora da modificação que você possui no seu computador e, como é sincronizado com o seu dispositivo, você verá a foto no aplicativo, classificada corretamente, assim que terminar o upload.


1

Use uma ferramenta de sincronização como, por exemplo , FolderSync , que deve cuidar dos registros de data e hora adequadamente. As ferramentas de sincronização devem ser especializadas em lidar com todos os aspectos da manutenção de cópias síncronas - incluindo registros de data e hora, é claro.


Tentei algumas ferramentas de sincronização, mas nenhuma sincronizou o carimbo de data / hora, porque acho que há algum tipo de proteção. Obrigado pela resposta embora.
Mahn

Você experimentou o FTPSyncX Trial ? Talvez não seja o visual mais sofisticado (o desenvolvedor não é designer). Mas eu uso o Pro há cerca de um ano e sincroniza os carimbos de data / hora bem via SFTP / SSH (o único protocolo que eu uso - o aplicativo pode lidar com mais).
Izzy

Vou verificar, mas, considerando que o SSHDroid não funcionou para mim, acho que também não receberei os carimbos de data e hora.
Mahn

Eu quase aposto que sim. Ainda me lembro do quanto essa parte foi difícil para o desenvolvedor - sentamos horas no Skype discutindo o problema :) Havia um problema de tempo feio no Windows, que às vezes relatava as coisas de maneira errada ... Ah, obtendo OT :) Simplesmente tente, não pode machucar, certo? E deixe-nos saber como funcionou ...
Izzy

Nada. Avaliação do FTPSyncX como cliente no telefone, freeSSHd como servidor no meu laptop, consigo conectar e sincronizar arquivos via STP / SSH, mas o registro de data e hora das fotos transferidas para o telefone ainda está sendo substituído pela data atual.
Mahn

1

PRESERVANDO DATA MODIFICADA NO DISPOSITIVO NEXUS --- NENHUMA RAIZ NECESSÁRIA ---

  • Do Android para o PC: use MTP
  • Do PC para o Android: Use o Droid Explorer

Felicidades.. :)

preservar Data de modificação. Não sei como o Droid Explorer faz isso. mas simplesmente funciona.

verifique se a Depuração USB foi marcada antes de usar o Droid Explorer.

um .. há uma limitação embora .. Droid Explorer só pode transferir arquivos, não pastas.

  • com o Droid Explorer, copie arquivos para o telefone Android em alguma pasta específica
  • em seguida, com o gerenciador de arquivos dentro do android, mova esses arquivos para a pasta desejada, não use copy, porque a cópia alterará a data de modificação, enquanto o corte não.

O Droid Explorer requer ROOT, não é?
AntonK 23/06

@AntonK Sim O Droid Explorer precisa do Root para preservar o registro de data e hora. Se o Root não estiver disponível, ele substituirá a data: maxrev.de/…
mgutt 30/05

1

Use PTP em vez de MTP ao conectar seu telefone por USB. Funciona para mim, eu uso um Samsung Note 4 conectado à máquina Ubuntu 14.04. No entanto, conectar como PTP somente permite copiar imagens / imagens. Todos os outros métodos de cópia de arquivos (bluetooth, WIFI, gerenciador de arquivos) em uma unidade externa alteram a data.


Testei isso com o Windows 10 e uma Nota 3 usando o CM 12.1 (Android 5.1.1). Mudei os arquivos (a única maneira pela qual o Windows permite a preservação), mas ele não preservou os carimbos de data e hora. :(
mgutt

0

Minha solução para preservar a data da modificação durante a cópia do arquivo no dispositivo Android com MTP:

Testado em ações LG G2 (sem raiz), Andorid 4.4.2 e HTC one M7, Andorid 4.4.2:

  1. Compartilhamento de rede da pasta a ser copiada no computador (Win 8)
  2. Use o SyncMe Wireless para copiar arquivos do computador para o dispositivo

Tanto quanto eu posso ver, as datas de modificação são totalmente preservadas!


0

Solução de backup usando o "SanDisk Memory Zone" para preservar a data e hora. copiar / mover arquivos do dispositivo Android para SDCard externo - Testado no Samsung Note 2, Note 3 e Mini SIII

Basta fazer backup dos seus arquivos de foto no SDCard e movê-lo para outro Android, PC, Apple ou outro dispositivo - se não for usado para fazer backup dos seus arquivos de foto, siga estas 8 instruções simples "

  1. Pesquise no Google Play e instale "SanDisk Memory Zone".
  2. Inicie o aplicativo e aguarde o arquivo de índice terminar.
  3. Selecione Backup / Restaurar e altere ou marque as configurações.
  4. Selecione o destino do cartão de memória e o que fazer backup (contatos, sms, fotos, músicas etc.).
  5. Verifique a capacidade necessária e disponível e continue no botão CONTINUAR.
  6. Aguarde a conclusão do backup.
  7. Agora você tem uma cópia dos arquivos no seu SDCard em ".memoryzone_backup / files / 1"
  8. Agora você pode mover os arquivos do cartão SD, como fotos, para o Windows, Linux ou outro dispositivo Android, preservando o carimbo de data / hora original.

copiar os arquivos para cartões SD externos não causa o problema com o timestamp modificação
AntonK

0

Solução rápida e fácil: basta usar um PC ou Mac para copiar os arquivos do antigo cartão SD (ou PC) para o novo cartão SD. Use um PC / Mac com um leitor / gravador de cartão SD (existem conversores de USB para cartão SD) que vêem o cartão como um armazenamento USB FAT32. Quando terminar de copiar, reinsira o novo cartão no telefone e reinicie.


0

Eu mudei para um Moto X 2014 e tive esse problema.

Também tentei muitas coisas, uma solução parecia ser "Motorola Migrate" para sincronizar com dois telefones WiFi (um velho backflip de gengibre). Na galeria, a situação era boa (mesmo em detalhes), mas estranhamente no gerenciador de arquivos a data foi alterada e, após algumas horas, até a galeria também mostrou a data da transferência.

A solução alternativa, se os arquivos não forem muitos, pode ser copiada manualmente, uma a uma, alterando cada vez a data e a hora no telefone.


0

Eu tenho um Nexus 4 e tive o mesmo problema com carimbo de data e hora (na verdade todos os arquivos).

Aqui estão as linhas de comando (com telefone enraizado) que usei, graças a um post no Ubuntu:

sudo apt-get install android-tools-adb

(no Ubuntu se o Android SDK não estiver instalado)

adb devices
cd /media/my_backup_folder_where_i_put_a_folder_with_all_my_data_named_"savandroid"_in_it

Para ir na minha pasta "backup", que contém a pasta "savandroid"

adb root
adb push savandroid /sdcard

Todos os arquivos e pastas que estão no "saveandroid" são enviados para o cartão SD, que funcionaram bem com todos os carimbos de hora corretos!

Nota : No Cyanogenmod, eu tive que selecionar a raiz para "apps and adb" no menu de desenvolvedores. Por padrão, é definido apenas em aplicativos.


0

Vou adicionar minha solução que funcionou no Ubuntu

Primeiro instale o simple-mtpfs e instale o fusível

cd ~
mkdir myphone
simple-mtpfs ~/myphone

Agora você tem as pastas do telefone montadas nesse diretório, pode usar rsync -tou cp -pcopiar as imagens e os tempos criados / modificados / acessados ​​não serão alterados.

Trabalhe para mim :)


No terminal, enquanto montado com mtpfs simples, os carimbos de data e hora aparecem como preservados. Mas, ao acessar os arquivos no telefone, os registros de data e hora parecem ter sido redefinidos.
Teresa e Junior

0

Para copiar arquivos do seu Android para o seu PC, mantendo os carimbos de data e hora:

adb shell tar c -C /storage/emulated/0/XXX . | tar xv

Para restaurá-los de volta ao Android:

tar c . | adb shell tar xv -C  /storage/emulated/0/XXX 

Isso funciona criando um arquivo tar dentro do dispositivo, que é imediatamente extraído no seu host e vice-versa.

O "v" permite ver o nome do arquivo que está sendo copiado.

Obviamente, isso pressupõe que você tenha "adb" instalado, que o telefone tenha a depuração USB ativada e que você já tenha validado o certificado de depuração.

sudo apt install adb

-1

Experimente o aplicativo "Bluetooth File Transfer", que preserva a data de modificação com a mudança. E eu acredito com a cópia também, mas tente primeiro com um arquivo / pasta para ter certeza. Também pode explorar o outro dispositivo via bluebooth.


O fornecimento de um link para os aplicativos que você recomenda tornaria essa resposta mais útil.
Eldarerathis

-1

Use o SyncMe Wireless e o compartilhamento de rede. Os carimbos de data e hora são preservados e a sincronização é rápida. Consegui fazer backup sem um computador no cartão SD no Kingston MobileLite Wireless em 20 minutos, re-sincronizando instantaneamente.


Você pode vincular este aplicativo?
Matthew Leia

Só consegui encontrar o link para o SyncMe Wireless , mas não o "compartilhamento de rede", a menos que você realmente quisesse dizer que é um aplicativo único. Forneça também o breve resumo do aplicativo e as etapas para fazê-lo, se possível.
Andrew T.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.