Tôi có thể sao chép một thư mục trong Google Drive không?


44

Tôi cần sao chép toàn bộ thư mục trên Google Drive mỗi tuần một lần. Có khoảng 25 tệp trong thư mục. Một cách dễ dàng để làm điều này là gì?


Từ giao diện web tôi giả sử. Điều này sẽ mang tính học thuật nếu bạn đang sử dụng máy khách và đồng bộ hóa với một thư mục trên PC.
ale

bạn có muốn sao lưu các thứ trong thư mục đó không? hoặc bạn đang cố gắng thêm nó vào một tài khoản google khác? Bạn có cần toàn bộ nội dung của thư mục hay chỉ con trỏ sẽ làm gì?
William

Tôi cần sao chép nó bởi vì tôi muốn có các quyền khác nhau trên chúng, vì điều này, tôi cần phải có các môi trường riêng biệt. Nhưng sử dụng google drive cho PC hoạt động tốt!
Dude2012

Câu trả lời:


19

Nếu bạn đang sử dụng ứng dụng Google Drive trên PC, bạn có thể sao chép và dán thư mục vào thư mục Google Drive và điều này sẽ sao chép nó. Tôi không tin rằng có thể làm điều này từ ứng dụng web.


4
Thật không may cho người dùng Linux, cho đến ngày hôm nay Google không hỗ trợ "Ứng dụng Google Drive". Do đó, họ cần sử dụng một thứ gọi là " grive "
iammilind

Nó sẽ tải lại toàn bộ thư mục mới lên web, hay nó có biết rằng nội dung của thư mục giống hệt nhau và nó sao chép nó mà không cần tải lên lại đầy đủ?
Julian

@Julian Tôi sẽ cho rằng nó tải lại toàn bộ.
Máy tính tập trung vào

Tôi chỉ xác nhận rằng nó thực sự tải lại tất cả các tập tin. Bummer.
Julian

không có ứng dụng, bạn cũng có thể nhấp chuột phải - tải xuống thư mục dưới dạng zip và tải lại sau khi hủy đăng ký
kamidude

10

Đã viết một Script ứng dụng chỉ để giải quyết vấn đề này. Bạn có thể sao chép bất kỳ nội dung thư mục cũng như cấu trúc trong đó. Script sẽ giúp loại bỏ sự cần thiết của ứng dụng máy tính để bàn Google Drive. Bằng cách thêm các kích hoạt, bạn thậm chí có thể tự động hóa quá trình.

GDrive Sao chép cấu trúc thư mục / Script nội dung

Sao chép cấu trúc thư mục trong Google Drive

Xin lưu ý :

  • điều này cũng thêm hậu tố _copycho tất cả các thư mục con
  • Cái folder_you_want_copied_copynày nằm trong hệ thống phân cấp cha mẹ cao nhất của Google Drive của bạn, vì vậy nếu bạn đã sao chép thư mục con của ổ đĩa, nó sẽ nổi lên mức cao nhất khi được sao chép

Tính năng cực hay, hoạt động hoàn hảo ngay cả đối với các thư mục rất lớn với hàng trăm thư mục con và hàng nghìn tệp (một số rất lớn). Cảm ơn bạn Shunmugh!
kubusz

3
cũng thêm hậu tố "_copy" cho tất cả các thư mục con, yike!
manas

5

Nếu bạn đang ở trong giao diện web Google Drive ...

  1. Tạo một thư mục mới và đặt tên nó là những gì bạn muốn.

  2. Đi vào thư mục Có sẵn, chọn tất cả các tệp, nhấp chuột phải và nhấn sao chép.

  3. Chọn tất cả các bản sao, nhấp chuột phải và nhấn di chuyển đến. Chọn thư mục mới.

Lưu ý rằng phương pháp này sẽ không hoạt động nếu thư mục bạn muốn sao chép có các thư mục con.


4
Không có tùy chọn "sao chép" trên menu chuột phải. Có "tạo một bản sao". Ý bạn là, tạo một bản sao của tất cả các tệp, sau đó tô sáng các bản sao và di chuyển chúng vào thư mục mới.
Blisterpeanuts

Người ta cũng cần đổi tên tất cả các tệp sau khi di chuyển chúng sang thư mục mới để xóa tiền tố "Sao chép".
Tom

Điều này dẫn đến tất cả các tệp có "Bản sao" được đặt trước tên tệp.
Elijah Lynn

@Blisterpeanuts Cũng không có "tạo một bản sao" nếu bạn muốn sao chép một thư mục - ngay cả khi nó trống. Khó chịu là vậy, nếu bạn muốn bắt đầu với một mẫu tên thư mục trống
Michael

Nếu bạn di chuyển một nhóm tệp bằng cách kéo và thả trong khi nhấn Ctrl sẽ xuất hiện dấu "+" gần con trỏ chuột và nó dường như hoạt động, nhưng các tệp "đã sao chép" chỉ là liên kết cứng , chúng có cùng ID và nếu bạn xóa chúng sẽ xóa chúng. cả bản sao đó và tệp gốc , cần khôi phục từ hoạt động gần đây. AFAIK đây là một lỗi trên Google Drive.
Pablo A

3

Câu trả lời rất muộn cho OP, và tôi nghĩ thậm chí không thể vào lúc hỏi, nhưng đây là những gì tôi làm hôm nay:

  1. Chọn thư mục tôi muốn nhân đôi.
  2. Nhấp chuột vào nó và sau đó chọn "Tải xuống" từ menu bật lên
  3. Có trình duyệt của tôi lưu kho lưu trữ đã nén vào một thư mục tạm thời
  4. Trích xuất thư mục từ kho lưu trữ và đặt tên mới
  5. Quay lại trong Drive; nhấp vào nút Mới màu xanh lớn và chọn "Tải lên thư mục" từ menu thả xuống.
  6. Quay lại máy tính của tôi; lấy thư mục vừa được đặt tên và kéo nó trở lại vào Drive.
  7. Xả nước bồn cầu

Lưu ý: Đây là một giải pháp khi bạn có rất nhiều tệp nhỏ và thư mục con cùng tạo thành một tệp nén nhỏ. Tính hữu dụng của nó giảm khi tổng kích thước tệp nén tăng.


1
Vấn đề chính của giải pháp này - ngoài nhu cầu rõ ràng là có đủ dung lượng để lưu trữ toàn bộ nội dung ổ đĩa của bạn cục bộ, hai lần (cả nén và trích xuất) - là nếu nó sẽ xuất tất cả tài liệu Google sang định dạng tài liệu MS OpenOffice phù hợp, và sau đó Khi bạn tải lại chúng, bạn phải chuyển đổi chúng trở lại định dạng của Google và xử lý tất cả các vấn đề định dạng mà điều này gây ra.
Guss

3

Tôi không muốn cho phép các bên thứ ba truy cập vào Drive của mình trừ khi tôi phải như vậy, như Lucky 711 , tôi đã viết kịch bản của riêng mình. Tôi để nó ở đây cho các nhà thám hiểm kết quả Google trong tương lai. Nó sẽ sao chép thư mục và tất cả nội dung của nó. Đối với trường hợp sử dụng của tôi, tôi đã viết nó để xử lý các tệp có nhiều cha mẹ bằng cách thêm thư mục được sao chép làm cha mẹ mới. Nếu bạn không muốn điều đó, hãy bỏ phần "Đếm cha mẹ không phải cha mẹ này".

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

}

Để tham khảo, nếu bạn muốn tạo các bản sao mới của các tệp có nhiều cha mẹ thay vì chỉ thêm thư mục mới làm cha mẹ khác, mã ngắn hơn sẽ trông như thế này:

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

}

Làm thế nào để bạn chạy tập lệnh này? Hoặc, làm thế nào để bạn có được các tham số đầu vào?
roydukkey

Đầu vào của nó là ID của thư mục bạn muốn sao chép, ID của thư mục bạn muốn tạo bản sao và tên bạn muốn sao chép. Để lấy ID của thư mục, hãy điều hướng đến thư mục đó và xem phần cuối của URL. Có lẽ nó giống như 1jVlkj------------------------Gk3D7ngoại trừ tất cả các dấu gạch ngang là các ký tự. Chuỗi vô nghĩa đó là ID duy nhất mà Google đã gán. Khi bạn có ba đầu vào, bạn sẽ gọi hàm này từ một hàm khác với một cái gì đó giống nhưcopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
Kỹ sư Toast

Điều này gần như hoàn hảo, nhưng trong trường hợp của tôi, tôi có các tệp được liên kết với các thư mục khác nhau. Vì vậy, thay vì sao chép tập tin, nó chỉ sao chép liên kết.
roydukkey

Nếu bạn có nghĩa là các tệp tồn tại ở nhiều vị trí (nghĩa là có nhiều cha mẹ), thì đó là địa chỉ trong bài. Bạn chỉ có thể sao chép countOfOtherParents++;dòng và điều đó sẽ làm được. Đối với trường hợp sử dụng của tôi, tôi rõ ràng muốn các tệp đó chỉ đơn giản là nhận cha mẹ khác thay vì tạo một bản sao mới của tệp. Nếu bạn có nghĩa là các tệp hoạt động như các siêu liên kết mở các thư mục khác, thì tôi không biết bạn có thể làm điều đó.
Kỹ sư Toast

IE, thay đổi tối thiểu sẽ là thế này nhưng mã "sạch" hơn sẽ là thế này
Kỹ sư Toast

3

Bạn có thể sử dụng tiện ích bổ sung " Sao chép thư mục " cho Bảng tính Google:

  1. tạo Bảng tính Google
  2. nhấp vào Add-ons > Get add-onsvà thêm tiện ích 'Sao chép thư mục'
  3. chọn thư mục bạn muốn sao chép
  4. làm xong

Xem video hướng dẫn .

Hoặc, Google App Script cửa hàng chrome này có thể được sử dụng để đạt được kết quả này. Điều này không yêu cầu tạo Bảng tính Google.


7
Điều này đòi hỏi phải để addon "Xem và đọc email của bạn"
Michael Cole

@MichaelCole và các quyền có vấn đề khác: quản lý bảng tính, tải các trang web tùy ý và tệ hơn tất cả: truy cập ngoại tuyến. Tôi khuyên bạn không nên cài đặt cái này cho đến khi vấn đề về quyền được khắc phục.
Guss

Ah .. đó là dũng cảm mới bài Cambridge analytica thế giới chúng ta đang sống trong hiện nay
abbood

Quản lý bảng tính là để thêm một tệp nhật ký bảng tính trong khi nó đang chạy.
Ajay

@Ajay Đó là xấu của tôi. Cảm ơn đã gửi lại.
jonsca

1

Tôi sử dụng nhiều máy và không muốn đặt ứng dụng ổ đĩa lên tất cả chúng vì vậy tôi đã viết đoạn script dưới đây để sao chép trên trang web. Nó xấu và cơ bản nhưng nó hoạt động. Nó chỉ sao chép một thư mục và các tập tin của nó, không phải các thư mục phụ. Tôi chắc chắn có chỗ để cải thiện, vì vậy hãy thoải mái thực hiện điều này và cải thiện nó, nhưng tôi hy vọng nó ít nhất hữu ích ngay từ đầu.

Mỗi bình luận bên dưới, đây là Tập lệnh Google Apps. Cách sử dụng là mở ứng dụng Google scripting, sau đó sao chép và dán tất cả mã vào một tập lệnh trống. Sau đó nhấp vào tùy chọn xuất bản trên Menu, sau đó chọn triển khai dưới dạng ứng dụng web. Sau đó, bạn có thể nhấp vào liên kết mã mới nhất hoặc sao chép và dán URL vào trình duyệt của mình. Sau đó, bạn sẽ tìm thấy một hộp nơi bạn có thể nhập thư mục mà bạn muốn sao chép và nút sao chép. Điều đó sẽ tạo một bản sao của thư mục bạn đã đặt tên và một bản sao của tất cả các tệp trong đó.

Lưu ý: nó sẽ không sao chép các thư mục con, chỉ các tệp.

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

Để nhân đôi thư mục, kéo và thả nó vào thư mục khác đang giữ nút CTRL.


9
Điều đó không trùng lặp; nó chỉ tạo ra một con trỏ Tôi đã kiểm tra điều này bằng cách thực hiện Ctrl-drag-n-drop của một thư mục đến một vài nơi khác nhau, sau đó tạo một tệp trong thư mục và tệp có thể nhìn thấy ở mọi nơi.
ale

Đúng rồi. Họ gọi nó là "thêm một thư mục"
th3an0maly

4
-1, không hoạt động.
Pacerier

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.