Posso duplicar uma pasta no Google Drive?

44

Preciso duplicar uma pasta inteira no meu Google Drive uma vez por semana. Existem cerca de 25 arquivos na pasta. Qual é uma maneira fácil de fazer isso?

Dude2012
fonte
A partir da interface web, presumo. Isso seria acadêmico se você estiver usando o cliente e sincronizando com uma pasta no seu PC.
ale
você quer apenas fazer o backup dessa pasta? ou você está tentando adicioná-lo a outra conta do google? Você precisa de todo o conteúdo da pasta ou apenas os ponteiros?
William William
Eu precisei duplicá-lo porque quero ter permissões diferentes para eles, para isso, preciso ter ambientes separados. Mas usar o google drive para PC funcionou bem!
Dude2012
Copiar pasta Chrome plugin: chrome.google.com/webstore/detail/copy-folder/...
Simon Woodside

Respostas:

19

Se você estiver usando o aplicativo Google Drive no seu PC, poderá copiar e colar a pasta no diretório do Google Drive, e isso poderá ser copiado. Não acredito que seja possível fazer isso a partir do aplicativo da web.

ComputerLocus
fonte
4
Infelizmente para usuários de Linux, até hoje o Google não tem suporte para o "Google Drive Application". Por isso eles precisam usar algo chamado " grive "
iammilind
Ele fará o upload da nova pasta inteira para a Web ou sabe que o conteúdo da pasta é idêntico e o duplicará sem um re-upload completo?
Julian
@ Julian Eu diria que ele re-carrega a coisa toda.
ComputerLocus
Acabei de confirmar que ele realmente carrega novamente todos os arquivos. Vadio.
Julian
sem o aplicativo, também é possível clique direito - download a pasta como zip e reupload-lo depois desarmazenando
kamidude
10

Escrevi um App Script apenas para resolver esse problema. Você pode copiar qualquer conteúdo da pasta, bem como a estrutura nela. O script ajudará a eliminar a necessidade do aplicativo de desktop do Google Drive. Ao adicionar gatilhos, você pode até automatizar o processo.

Estrutura de pastas de cópia do GDrive / Script de conteúdo

Copiar estrutura de pastas no Google Drive

Observe :

  • isso também adiciona sufixo _copya todas as subpastas
  • Ele folder_you_want_copied_copyestá na hierarquia pai mais alta do seu Google Drive. Portanto, se você copiou uma subpasta da sua unidade, ela subirá para o nível mais alto quando copiada
Shunmugh Sundaram
fonte
Recurso super bacana, funcionou perfeitamente mesmo para pastas muito grandes, com centenas de subpastas e milhares de arquivos (alguns eram muito grandes). Obrigado Shunmugh!
Kubusz
3
também adiciona o sufixo "_copy" a todas as subpastas, nossa!
manas
5

Se você estiver na interface da web do Google Drive ...

  1. Crie uma nova pasta e atribua o nome que você deseja.

  2. Vá para a pasta pré-existente, selecione todos os arquivos, clique com o botão direito e clique em copiar.

  3. Selecione todas as cópias, clique com o botão direito e pressione Mover para. Selecione a nova pasta.

Observe que esse método não funcionará se a pasta que você deseja copiar tiver subpastas.

Brandon
fonte
4
Não há opção "copiar" no menu do botão direito. Há "faça uma cópia". O que você quer dizer é fazer uma cópia de todos os arquivos, realçar as cópias e movê-las para a nova pasta.
Blisterpeanuts
Também é necessário renomear todos os arquivos após movê-los para a nova pasta para remover o prefixo "Copy of".
Tom
Isso resulta em todos os arquivos com "Cópia de" prefixado nos nomes dos arquivos.
Elias Lynn
@Blisterpeanuts Também não há "faça uma cópia" se você quiser copiar uma pasta - mesmo que esteja vazia. Irritantemente por isso, se você quiser começar com um modelo de nomes de diretório vazias
Michael
Se você mover um grupo de arquivos com o recurso de arrastar e soltar enquanto pressiona Ctrl, aparece um "+" próximo ao ponteiro do mouse e parece funcionar, mas os arquivos "copiados" são apenas hardlinks , eles têm o mesmo ID e, se você excluí-los , excluirá essa cópia e o arquivo original , precisando restaurar a partir de atividades recentes. AFAIK, este é um erro no Google Drive.
Pablo A
3

Resposta muito tardia para o OP, e acho que nem é possível na hora de perguntar, mas é isso que faço hoje:

  1. Selecione a pasta que deseja duplicar.
  2. Clique secundário e escolha "Download" no menu pop-up.
  3. Meu navegador salva o arquivo compactado em um diretório temporário
  4. Extraia a pasta do arquivo e dê um novo nome a ela
  5. De volta ao Drive; clique no botão azul grande Novo e selecione "Upload de pasta" no menu suspenso.
  6. De volta ao meu computador; pegue a pasta recém-nomeada e arraste-a de volta para o Drive.
  7. Lave o vaso sanitário

Nota: Esta é uma solução quando você tem muitos pequenos arquivos e subpastas que juntos criam um arquivo compactado pequeno. Sua utilidade diminui à medida que o tamanho total do arquivo compactado aumenta.

Martin Bramwell
fonte
1
O principal problema desta solução - além da necessidade óbvia de ter espaço suficiente para armazenar todo o conteúdo da unidade localmente, duas vezes (compactado e extraído) - é que se ele exportará todos os documentos do Google para o formato de documento apropriado do MS OpenOffice e, em seguida, ao recarregá-los, você deve convertê-los novamente para os formatos do Google e lidar com todos os problemas de formatação que isso causa.
Guss
3

Prefiro me abster de permitir que terceiros acessem meu Drive, a menos que precise, como o Lucky 711 , escrevi meu próprio script. Deixo aqui para futuros aventureiros de resultados do Google. Ele copiará a pasta e todo o seu conteúdo. No meu caso de uso, escrevi para lidar com arquivos com vários pais, apenas adicionando a pasta copiada como um novo pai. Se você não quiser, solte a parte "Contar os pais que não são esse pai".

function copyFolderAndContentsToFolder(folderToCopyId, newParentFolderId, newFolderName) {

  var folderToCopy = DriveApp.getFolderById(folderToCopyId);
  var newParentFolder = DriveApp.getFolderById(newParentFolderId);

  // Create the copy of the folder
  var newFolder = newParentFolder.createFolder(newFolderName);

  // Copy all the files in that folder
  var files = folderToCopy.getFiles();
  while (files.hasNext()) {
    var file = files.next();

    // Count the parents that aren't this parent
    var countOfOtherParents = 0;
    var parents = file.getParents();
    while (parents.hasNext()) {
      var parent = parents.next();
      if (parent.getId() !== folderToCopyId) { countOfOtherParents++; }
    }

    // If it's unique, then copy it. Otherwise, just add it to the new parent.
    if (countOfOtherParents == 0) {
      file.makeCopy(file.getName(),newFolder);
    } else {
      newFolder.addFile(file);
    }

  }

  // Copy all the subfolders in that folder
  var folders = folderToCopy.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    copyFolderAndContentsToFolder(folder.getId(), newFolder.getId(), folder.getName());
  }

}

Para referência, se você deseja criar novas cópias de arquivos com vários pais, em vez de apenas adicionar a nova pasta como outro pai, o código mais curto ficaria assim:

function copyFolderAndContentsToFolder(folderToCopyId, newParentFolderId, newFolderName) {

  var folderToCopy = DriveApp.getFolderById(folderToCopyId);
  var newParentFolder = DriveApp.getFolderById(newParentFolderId);

  // Create the copy of the folder
  var newFolder = newParentFolder.createFolder(newFolderName);

  // Copy all the files in that folder
  var files = folderToCopy.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    file.makeCopy(file.getName(),newFolder);
  }

  // Copy all the subfolders in that folder
  var folders = folderToCopy.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    copyFolderAndContentsToFolder(folder.getId(), newFolder.getId(), folder.getName());
  }

}
Engenheiro Toast
fonte
Como você executa esse script? Ou como você obtém os parâmetros de entrada?
roydukkey
Suas entradas são o ID da pasta que você deseja copiar, o ID da pasta na qual você deseja criar a cópia e o nome que você deseja que a cópia tenha. Para obter o ID de uma pasta, navegue até ela e veja o final do URL. Provavelmente é algo como, 1jVlkj------------------------Gk3D7exceto que todos os traços são caracteres. Essa sequência sem sentido é o ID exclusivo que o Google atribuiu. Depois de ter as três entradas, você iria chamar esta função a partir de outra função com algo comocopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
Engenheiro Toast
Isso é quase perfeito, mas no meu caso eu tenho arquivos que estão vinculados a pastas diferentes. Então, em vez de copiar o arquivo, ele apenas copia o link.
roydukkey
Se você quer dizer arquivos que existem em vários locais (ou seja, têm vários pais), isso é abordado na postagem. Você pode copiar apenas a countOfOtherParents++;linha e isso será suficiente. Para o meu caso de uso, eu queria explicitamente que esses arquivos obtivessem outro pai em vez de criar uma nova cópia do arquivo. Se você quer dizer arquivos que funcionam como hiperlinks que abrem outras pastas, então eu não sabia que você poderia fazer isso.
Engineer Toast
Ou seja, a alteração mínima seria essa, mas o código "mais limpo" seria esse #
Engineer Engineer Toast
3

Você pode usar o complemento " Copiar pasta " para as planilhas do Google:

  1. crie uma planilha do Google
  2. clique em Add-ons > Get add-onse adicione o complemento 'Copy Folder'
  3. selecione a pasta que deseja copiar
  4. feito

Veja o vídeo tutorial .

Ou, esse Google App Script da Chrome Web Store pode ser usado para alcançar esse resultado. Este não requer a criação de uma planilha do Google.

abbood
fonte
7
Isso requer deixando o addon "Ver e ler seus e-mails"
Michael Cole
@MichaelCole e também outras permissões problemáticas: gerenciar planilhas, carregar sites arbitrários e, pior ainda: acesso offline. Eu recomendo que ninguém instale isso até que os problemas de permissão sejam corrigidos.
Guss
Ah .. é o admirável mundo analytica New pós Cambridge em que vivemos agora
abbood
A planilha de gerenciamento é adicionar um arquivo de log da planilha enquanto estiver em execução.
Ajay
@ Jay Esse foi o meu mal. Obrigado por reenviar.
jonsca
1

Eu uso várias máquinas e não quero colocar o aplicativo da unidade em todas elas, por isso escrevi o script abaixo para copiar no site. É feio e básico, mas funciona. Ele copia apenas uma pasta e seus arquivos, não subpastas. Tenho certeza de que há espaço para melhorias, portanto, fique à vontade para pegar e melhorar, mas espero que seja pelo menos útil desde o início.

Por um comentário abaixo, este é um script do Google Apps. A maneira de usá-lo é abrir o aplicativo de script do Google, copiar e colar todo o código em um script em branco. Depois disso, clique na opção de publicação no Menu e selecione implantar como aplicativo da web. Você pode clicar no link Código mais recente ou copiar e colar o URL no seu navegador. Em seguida, você encontrará uma caixa onde pode digitar a pasta que deseja copiar e o botão copiar. Isso deve criar uma cópia da pasta que você nomeou e uma cópia de todos os arquivos contidos.

Nota: não copiará subpastas, apenas os arquivos.

function doGet()
{
  // Build UI
  // Create UI object
  var copyUI = UiApp.createApplication();
  // Create Input box referenced later by the name explicitly set below
  var userInput = copyUI.createTextBox().setName("textbox1");
  //create button
  var enterButton = copyUI.createButton("copy");
  // add all objects to UI object
  copyUI.add(userInput).add(enterButton);

  //Create clicke event handeler and add input field to handeler
  var clickHandler = copyUI.createServerHandler('onClick')
  .addCallbackElement(userInput);

  // add handelrer to the copy button
  enterButton.addClickHandler(clickHandler);

  // instantiate GUI
  return copyUI;
}


function onClick(e)
{
  // call currently active application/gui
  var app = UiApp.getActiveApplication();

  //Pass in the value of the e paramater named 'textbox1'
  var input = e.parameter.textbox1;

  // log value passed in from user input
  //Logger.log(input);

  // perform file copy
  CopyFile(input);
}


function CopyFile(filename)
{
  // declaire variables
  var newFolder_String;
  var newFolder;
  var originalFolder;
  var fileArray;
  var loopCount;
  var arrayLength;
  var newFile;
  // get original folder id
  originalFolder = DocsList.getFolder(filename);
  Logger.log(originalFolder.getId());


  // create new "copy" folder using: createFolder(<filename>_copy)
  newFolder_String = filename + "_Copy";
  Logger.log(newFolder_String);
  newFolder = DocsList.createFolder(newFolder_String);

  // get folders and files from original file using: 
    //   getFiles() from original file into an array
  fileArray = originalFolder.getFiles();

  // Copy files into folder:
  arrayLength = fileArray.length;
  loopCount = 0;

  // looping through array of file
  for (loopCount = 0; loopCount < arrayLength; loopCount++)
  {
    // create file copies using: file[i].makeCopy() and newFile.addToFolder(CopyFolder)
    newFile = fileArray[loopCount].makeCopy();
    Logger.log(newFile.getName());
    newFile.addToFolder(newFolder)
  }

}
Sorte 711
fonte
-1

Para duplicar uma pasta, arraste e solte-a em outra pasta segurando o botão CTRL.

aborruso
fonte
9
Isso não se duplica; apenas cria um ponteiro. Eu testei isso pressionando a tecla Ctrl e arrastar e soltar de uma pasta para alguns lugares diferentes, depois criei um arquivo na pasta e o arquivo é visível em todos os lugares.
ale
Está certo. Eles chamam de "adicionando uma pasta"
th3an0maly 16/07
4
-1, não funciona.
Pacerier