def backup(self, backup_name, folder_key=None, folder_name=None):
        """Copies the google spreadsheet to the backup_name and folder specified. 
        
        Args:
          backup_name (str): The name of the backup document to create.

          folder_key (Optional) (str): The key of a folder that the new copy will
            be moved to.
         
          folder_name (Optional) (str): Like folder_key, references the folder to move a
            backup to. If the folder can't be found, sheetsync will create it.

        """

        folder = self._find_or_create_folder(folder_key, folder_name)
        drive_service = self.drive_service
        try:
            source_rsrc = drive_service.files().get(fileId=self.document_key).execute()
        except Exception, e:
            logger.exception("Google API error. %s", e)
            raise e

        backup = self._create_new_or_copy(source_doc=source_rsrc, 
                                        target_name=backup_name, 
                                        folder=folder,
                                        sheet_description="backup")

        backup_key = backup['id']
        return backup_key