Google 드라이브에서 폴더를 복제 할 수 있습니까?


44

일주일에 한 번 내 Google 드라이브의 전체 폴더를 복제해야합니다. 폴더에는 약 25 개의 파일이 있습니다. 이 작업을 수행하는 쉬운 방법은 무엇입니까?


내가 생각하는 웹 인터페이스에서. 클라이언트를 사용하고 PC의 폴더에 동기화하는 경우 학업 적입니다.
ale

그 폴더에있는 자료들을 백업하고 싶습니까? 아니면 다른 Google 계정에 추가하려고합니까? 폴더의 전체 내용이 필요합니까? 아니면 포인터 만 사용할까요?
William

다른 사용 권한을 원하기 때문에 복제해야했습니다.이를 위해서는 별도의 환경이 필요합니다. 그러나 PC에 Google 드라이브를 사용하면 정상적으로 작동했습니다!
Dude2012

답변:


19

PC에서 Google 드라이브 애플리케이션을 사용중인 경우 폴더를 Google 드라이브 디렉토리에 복사하여 붙여 넣으면 복사됩니다. 웹 응용 프로그램 에서이 작업을 수행 할 수 있다고 생각하지 않습니다.


4
불행히도 Linux 사용자에게는 오늘날까지 Google은 "Google Drive Application"을 지원하지 않습니다. 따라서 그들은 " grive " 라는 것을 사용해야합니다
iammilind

전체 새 폴더를 웹에 다시 업로드하거나 폴더의 내용이 동일하며 전체 다시 업로드하지 않고 복제한다는 것을 알고 있습니까?
율리우스

@ 줄리안 나는 모든 것을 다시 업로드한다고 가정합니다.
ComputerLocus

방금 모든 파일을 다시 업로드한다는 것을 확인했습니다. 버머.
Julian

응용 프로그램이 없으면 마우스 오른쪽 버튼을 클릭하여 폴더를 zip으로 다운로드하고 압축을

10

이 문제를 해결하기 위해 앱 스크립트를 작성했습니다. 폴더 내용 및 구조를 복사 할 수 있습니다. 스크립트를 사용하면 Google 드라이브 데스크톱 앱이 필요하지 않습니다. 트리거를 추가하여 프로세스를 자동화 할 수도 있습니다.

GDrive 복사 폴더 구조 / 콘텐츠 스크립트

Google 드라이브에서 폴더 구조 복사

참고 :

  • 이것은 또한 _copy모든 하위 폴더에 접미사 를 추가합니다
  • folder_you_want_copied_copy당신이 당신의 드라이브의 하위 폴더를 복사 그래서 만약이 최고 수준에 거품까지 복사 할 때, 당신의 Google 드라이브의 가장 높은 상위 계층에

수백 개의 하위 폴더와 수천 개의 파일이있는 매우 큰 폴더에서도 완벽하게 작동하는 매우 멋진 기능입니다 (일부는 초대형). Shunmugh 감사합니다!
kubusz

3
또한 모든 하위 폴더에 접미사 "_copy"를 추가합니다.
manas

5

Google 드라이브 웹 인터페이스에있는 경우 ...

  1. 새 폴더를 만들고 원하는 이름을 지정하십시오.

  2. 기존 폴더로 이동하여 모든 파일을 선택하고 마우스 오른쪽 단추를 클릭 한 후 사본을 누르십시오.

  3. 모든 사본을 선택하고 마우스 오른쪽 버튼을 클릭 한 후 이동을 누르십시오. 새 폴더를 선택하십시오.

복사하려는 폴더에 하위 폴더가 있으면이 방법이 작동하지 않습니다.


4
마우스 오른쪽 버튼 클릭 메뉴에는 "복사"옵션이 없습니다. "사본 만들기"가 있습니다. 즉, 모든 파일을 복사 한 다음 복사본을 강조 표시하고 새 폴더로 옮깁니다.
물집 땅콩

또한 "복사본"접두사를 제거하려면 모든 파일을 새 폴더로 이동 한 후 모든 파일의 이름을 바꿔야합니다.
Tom

결과적으로 파일 이름 앞에 "Copy of"가 붙은 모든 파일이 생성됩니다.
Elijah Lynn

@Blisterpeanuts 폴더가 비어 있어도 "복사본 만들기"는 없습니다. 빈 디렉토리 이름의 템플릿으로 시작하고 싶다면
Michael

Ctrl 키를 누른 상태에서 끌어서 놓기로 파일 그룹을 이동하면 마우스 포인터 근처에 "+"가 표시 되고 작동 하는 것처럼 보이지만 "복사 된"파일은 하드 링크 일 뿐이며 동일한 ID를 가지며 삭제 하면 삭제됩니다. 해당 사본 과 원본 파일 모두 최근 활동에서 복원해야합니다. AFAIK 이것은 Google 드라이브의 버그입니다.
파블로 A

3

OP에 대한 매우 늦은 답변이며, 요청 당시에는 가능하지 않다고 생각하지만 이것이 오늘날의 일입니다.

  1. 복제 할 폴더를 선택하십시오.
  2. 이를 클릭 한 다음 팝업 메뉴에서 "다운로드"를 선택하십시오.
  3. 브라우저가 압축 된 아카이브를 임시 디렉토리에 저장하도록하십시오
  4. 아카이브에서 폴더를 추출하고 새 이름을 지정하십시오.
  5. 드라이브에 다시; 큰 파란색 새로 만들기 버튼을 클릭하고 드롭 다운 메뉴에서 "폴더 업로드"를 선택하십시오.
  6. 내 컴퓨터로 돌아 왔습니다. 새로 이름이 지정된 폴더를 잡고 드라이브로 다시 끕니다.
  7. 화장실 플러시

참고 : 이것은 작은 압축 파일을 만드는 작은 파일과 하위 폴더가 많을 때의 솔루션입니다. 전체 압축 파일 크기가 커질수록 유용성이 줄어 듭니다.


1
이 솔루션의 주요 문제는 전체 드라이브 내용을 로컬에 두 번 (압축 및 압축 해제) 저장할 수있는 충분한 공간이 있어야한다는 것 외에도 모든 Google 문서를 적절한 MS OpenOffice 문서 형식으로 내 보낸 다음 다시로드 할 때 Google 형식으로 다시 변환하고 이로 인해 발생하는 모든 형식 문제를 해결해야합니다.
Guss

3

Lucky 711 과 같이 제 자신의 스크립트를 작성 하지 않은 한, 제 3자가 내 드라이브에 액세스하는 것을 금지하고 싶습니다 . 앞으로 Google 검색 모험가를 위해 여기에 남겨 둡니다. 폴더와 모든 내용이 복사됩니다. 유스 케이스의 경우 복사 된 폴더를 새 부모로 추가하여 여러 부모가있는 파일을 처리하도록 작성했습니다. 원하지 않으면 "이 부모가 아닌 부모를 세십시오"부분을 삭제하십시오.

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());
  }

}

참고로 새 폴더를 다른 부모로 추가하는 대신 여러 부모가있는 파일의 새 복사본을 만들려면 짧은 코드는 다음과 같습니다.

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());
  }

}

이 스크립트를 어떻게 실행합니까? 또는 입력 매개 변수를 어떻게 얻습니까?
roydukkey

입력 할 내용은 복사하려는 폴더의 ID, 사본을 만들려는 폴더의 ID 및 사본의 이름입니다. 폴더의 ID를 얻으려면 해당 폴더로 이동하여 URL의 끝을보십시오. 1jVlkj------------------------Gk3D7모든 대시가 문자 인 것을 제외하고는 아마도 같은 것일 수 있습니다. 그 횡설수설 문자열은 Google이 할당 한 고유 ID입니다. 세 개의 입력이 있으면 다른 함수 에서이 함수를 다음과 같이 호출합니다.copyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
Engineer Toast

이것은 거의 완벽하지만 제 경우에는 다른 폴더에 연결된 파일이 있습니다. 따라서 파일을 복사하는 대신 링크 만 복사합니다.
roydukkey

여러 위치에 존재하는 파일 (즉, 여러 부모가있는 파일)을 의미하는 경우 게시물에서 해결됩니다. countOfOtherParents++;회선 만 복사하면 됩니다. 유스 케이스의 경우, 파일의 새 사본을 작성하는 대신 해당 파일이 다른 상위를 가져 오도록 명시 적으로 원했습니다. 다른 폴더를 여는 하이퍼 링크로 작동하는 파일을 의미한다면, 그렇게 할 수 있다는 것을 몰랐습니다.
엔지니어 토스트

IE는 최소한의 변화가 될 있지만, "청소기"코드는 것
엔지니어 토스트

3

Google 스프레드 시트에 " 폴더 복사 "애드온을 사용할 수 있습니다 .

  1. Google 스프레드 시트 만들기
  2. 를 클릭 Add-ons > Get add-ons하고 '복사 폴더'부가 기능을 추가하십시오`
  3. 복사하려는 폴더를 선택하십시오
  4. 끝난

비디오 자습서를 참조하십시오 .

또는 이 크롬 웹 스토어 Google App Script 를 사용하여이 결과를 얻을 수 있습니다. Google 스프레드 시트를 만들 필요는 없습니다.


7
이를 위해서는 애드온에 "이메일보기 및 읽기"가 필요합니다.
Michael Cole

@MichaelCole 및 기타 문제가있는 권한 : 스프레드 시트 관리, 임의의 웹 사이트로드 및 무엇보다도 악화 : 오프라인 액세스. 권한 문제가 해결 될 때까지 아무도 설치하지 않는 것이 좋습니다.
거스

아 .. 지금 우리가 살고있는 용감한 새로운 포스트 캠브리지 ANALYTICA의 세상
abbood

스프레드 시트 관리는 스프레드 시트 로그 파일이 실행되는 동안 추가합니다.
Ajay

@Ajay 그게 내 잘못이야. 다시 제출해 주셔서 감사합니다.
jonsca

1

여러 대의 컴퓨터를 사용하고 모든 컴퓨터에 드라이브 앱을 배치하고 싶지 않으므로 사이트에 복사하기 위해 아래 스크립트를 작성했습니다. 추악하고 기본이지만 작동합니다. 하위 폴더가 아닌 폴더와 파일 만 복사합니다. 나는 개선의 여지가 있다고 확신하므로 자유롭게 가져 와서 개선하십시오. 그러나 최소한 처음부터 도움이되기를 바랍니다.

아래의 의견에 따라 Google Apps Script입니다. 이를 사용하는 방법은 Google 스크립팅 앱을 연 다음 모든 코드를 복사하여 빈 스크립트에 붙여 넣는 것입니다. 그런 다음 메뉴에서 게시 옵션을 클릭 한 다음 웹 앱으로 배포를 선택하십시오. 그런 다음 최신 코드 링크를 클릭하거나 URL을 복사하여 브라우저에 붙여 넣을 수 있습니다. 그런 다음 복사 할 폴더를 입력 할 수있는 상자와 복사 버튼이 있습니다. 이름을 지정한 폴더와 그 안에있는 모든 파일의 복사본을 만들어야합니다.

참고 : 하위 폴더는 복사하지 않고 파일 만 복사합니다.

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)
  }

}

-1

폴더를 복제하려면 Ctrl 키를 누른 상태에서 다른 폴더로 폴더를 끌어다 놓습니다.


9
중복되지 않습니다. 그냥 포인터를 만듭니다. 폴더를 Ctrl- 드래그 앤 드롭하여 여러 위치로 이동 한 다음 폴더에 파일을 만들면 모든 위치에서 파일을 볼 수 있습니다.
ale

맞습니다. "폴더 추가"라고합니다
th3an0maly

4
-1, 작동하지 않습니다.
Pacerier

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.